将字符串分为段落

时间:2016-03-15 17:18:59

标签: c#

我在文本文件中有这个字符串

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

我希望将起始单词和结束单词之间的每个部分都添加到特定的字符串变量Like

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

2 个答案:

答案 0 :(得分:0)

您可以为找到的字符串创建一个列表,这样您就不必计算它们。然后循环遍历原始字符串(我们将其称为's')如果找到了开始和结束,则在这些单词之间获取文本。重复直到完成,然后根据需要使用这些值。下面提供的控制台输出示例代码:

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之间的文字,但您实际显示为有效输出的是{{之间的文字1}}和*****.********* start *****.*********。如果是这种情况,请在提供的代码中将end替换为start,您应该没问题。

答案 1 :(得分:-2)

试试这个(控制台应用程序):

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();
        }
    }
}