C# 将字符串划分为段落

C# 将字符串划分为段落,c#,C#,我在文本文件中有这个字符串 " *****.********* start *****.********* aaaaaaaaaaaaaaa adddddddddddddddd dddddddddddddd end *****.********* start *****.********* frfrffrfrffr bbbbbbbbbbbbbbb gggggggggggggggg end *****.********* start *****.********* ppppppppppwpw hhh

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

" *****.********* 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 ";
尝试此(控制台应用程序):

使用System.Collections.Generic;
使用制度;
使用System.Text.RegularExpressions;
命名空间TestRegex
{
班级计划
{
公共静态IEnumerable解析(字符串输入、字符串开始标记、字符串结束标记)
{
Regex r=newregex(Regex.Escape(startTag)+“(.*?”+Regex.Escape(endTag));
MatchCollection matches=r.matches(输入);
foreach(匹配中的匹配)
产生返回匹配。组[1]。值;
}
静态void Main(字符串[]参数)
{
var input=“*********************开始***************aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadddddddddddddddddddddddddddd结束*********************开始******************开始******************frffr bbbbbbbbbbbbbbbbbbgggggggggggggg结束******************开始******************************开始*********************************************************************************************************************************************************************************************************************************************************************************************************;
var start=“************************启动****************”;
var end=“end”;
var temp=Parse(输入、开始、结束);
foreach(温度中的var s)
{
控制台。写入线(s);
}
Console.ReadLine();
}
}
}

您可以为找到的字符串创建一个列表,这样就不必对它们进行计数。然后循环遍历原始字符串(我们称之为“s”),如果找到了start和end,则在这些单词之间获取文本。重复此操作直到完成,然后根据需要使用这些值。控制台中输出的示例代码如下所示:

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();
    }
}
使用系统;
使用System.Collections.Generic;
公开课考试{
静态void Main(字符串[]参数){
字符串s=“*********************开始******************aaaaaaaaaaaaaaaaaaaaaaaaaadddddddddddddddddddddddddddd结束*********************开始*********************开始************************frffr bbbbbbbbbbbbbbbbgggggggggggg结束***************开始************************开始**********************************************************************************************************************************************************************;
列表值=新列表();
而(s.Contains(“开始”)和s.Contains(“结束”)){
字符串g=s;
添加(g.Substring((g.IndexOf(“start”)+“start”.Length),(g.IndexOf(“end”)-g.IndexOf(“start”)-“start.Length));
s=s.Substring(s.IndexOf(“end”)+“end.”长度);
}
foreach(值中的字符串v){
控制台写入线(v);
}
Console.ReadKey();
}
}

注意:我注意到,在您的问题中,您要求输入
start
end
之间的文本,但实际显示为有效输出的是
***************************************************
end
之间的文本。如果是这种情况,请将所提供代码中的
start
替换为
******************************
,您应该会没事。

花点时间阅读帮助中心中的。堆栈溢出上的格式设置与其他站点不同。您的帖子越好看,用户就越容易帮助您。查看
String.IndexOf
String.Split
。首先,你需要证明你已经试图自己解决这个问题。你应该解释你的代码,而不仅仅是粘贴它。这是可行的,但不能以一种可以在不同但类似的场景中重用的方式回答问题!
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();
    }
}