2016-03-15 114 views
-6

我有文本文件鴻溝串段落

" *****.********* start *****.********* aaaaaaaaaaaaaaa adddddddddddddddd dddddddddddddd end *****.********* start *****.********* frfrffrfrffr bbbbbbbbbbbbbbb gggggggggggggggg end *****.********* start *****.********* ppppppppppwpw hhhhheeehheee mmmmmmmmmmeem end " 

這裏面的字符串,我想要得到這樣

String first="aaaaaaaaaaaaaaa adddddddddddddddd dddddddddddddd"; 
String second="frfrffrfrffr bbbbbbbbbbbbbbb gggggggggggggggg "; 
+1

花點時間閱讀幫助中心的[編輯幫助](http://stackoverflow.com/editing-help)。堆棧溢出的格式與其他站點不同。您的帖子看起來越好,用戶就越容易幫助您。 – gunr2171

+1

看'String.IndexOf'和'String.Split'。首先,你需要證明你自己試圖解決問題。 – sab669

回答

0

您可以爲找到的字符串創建一個列表,以便您不必對它們進行計數。然後遍歷原始字符串(我們將其稱爲''),如果找到開始和結束,請獲取這些詞之間的文本。重複,直到完成,然後使用你想要的值。下面提供與控制檯輸出的示例代碼:

using System; 
using System.Collections.Generic; 

public class Test{ 
    static void Main(string[] args){ 
     string s = " *****.********* start *****.********* aaaaaaaaaaaaaaa adddddddddddddddd dddddddddddddd end *****.********* start *****.********* frfrffrfrffr bbbbbbbbbbbbbbb gggggggggggggggg end *****.********* start *****.********* ppppppppppwpw hhhhheeehheee mmmmmmmmmmeem end "; 
     List<String> values = new List<String>(); 
     while (s.Contains("start") && s.Contains("end")){ 
      string g = s; 
      values.Add(g.Substring((g.IndexOf("start") + "start".Length), (g.IndexOf("end") - g.IndexOf("start") - "start".Length))); 
      s = s.Substring(s.IndexOf("end")+ "end".Length); 
     } 
     foreach (string v in values){ 
      Console.WriteLine(v); 
     } 
     Console.ReadKey(); 
    } 
} 

注:我注意到,在你的問題你問startend之間的文本,但你居然顯示爲有效輸出是*****.********* start *****.*********之間的文本和end。如果是這樣,請在提供的代碼中將start替換爲*****.********* start *****.*********,您應該沒問題。

-2

啓動Word和結束字特定字符串變量之間的每個部分試試這個(控制檯應用程序):

using System.Collections.Generic; 
using System; 
using System.Text.RegularExpressions; 

namespace TestRegex 
{ 
    class Program 
    { 
     public static IEnumerable<string> Parse(string input, string startTag, string endTag) 
     { 
      Regex r = new Regex(Regex.Escape(startTag) + "(.*?)" + Regex.Escape(endTag)); 
      MatchCollection matches = r.Matches(input); 
      foreach (Match match in matches) 
       yield return match.Groups[1].Value; 
     } 

     static void Main(string[] args) 
     { 
      var input = " *****.********* start *****.********* aaaaaaaaaaaaaaa adddddddddddddddd dddddddddddddd end *****.********* start *****.********* frfrffrfrffr bbbbbbbbbbbbbbb gggggggggggggggg end *****.********* start *****.********* ppppppppppwpw hhhhheeehheee mmmmmmmmmmeem end "; 
      var start = " *****.********* start *****.********* "; 
      var end = " end"; 
      var temp = Parse(input, start, end); 
      foreach(var s in temp) 
      { 
       Console.WriteLine(s); 
      } 
      Console.ReadLine(); 
     } 
    } 
} 
+0

你應該解釋你的代碼,而不是僅僅粘貼它。這可行,但不能以一種可以在不同但相似的場景中重複使用的方式回答問題! –