2016-03-15 110 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

你应该解释你的代码,而不是仅仅粘贴它。这可行,但不能以一种可以在不同但相似的场景中重复使用的方式回答问题! –