【问题标题】:spliting string with double new line characters用双换行符分割字符串
【发布时间】:2014-06-04 09:45:03
【问题描述】:

我有一个 .txt 文件,其中的数据存储在一个长字符串中。每行之后的字符串中有许多单个换行符。段落末尾有双换行符。我想要的是将字符串拆分为一个段落数组。

我认为是以下内容,但它不起作用

string filePath = "C:\\Users\\Data.txt";
StreamReader readFile = new StreamReader(filePath);
string Data = readFile.ReadToEnd();
string[] paragraphss = Regex.Split(Data, "(^|[^\n])\n{2}(?!\n)");

请帮忙 谢谢你

【问题讨论】:

  • 怎么样...这个:.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);

标签: c# regex


【解决方案1】:

如果您可以不使用正则表达式,Data.Split("\n\n") 应该可以解决问题。

【讨论】:

  • 它不起作用 string.split() 只需要一个字符而不是一个字符串
  • Data.Split(new [] { "\n\n" }) then ;)
  • LueTm:没有只接受字符串数组的 Split 方法。 Chaitanya,你可以使用字符串数组来分割,如果你使用 StringSplitOptions.None 作为第二个参数。
【解决方案2】:

在 Windows 系统上,换行符是 \r\n,在 Unix 系统上是 \n。这可能是行没有被拆分的原因,因为您专门寻找 \n\n 而不是 \r\n\r\n

但是,您可以使用Environment.Newline,它将为软件运行的任何环境返回正确的换行符。

【讨论】:

  • 谢谢。我正在做的是沿着 \n\n 拆分,但由于我在 Windows 系统上,我需要寻找 \r\n\r\n。感谢您的帮助。
  • 这并不总是正确的,这取决于用于保存文档的文本编辑器及其配置方式,有些是跨平台的,并将使用 \n 作为默认值进行保存。
【解决方案3】:

受到@LueTm 的回答和@Traubenfuchs 的评论的启发,只是让它看起来对编译器友好且完整。以下是使用双换行符拆分字符串的方法:

Data.Split(new string[] { "\r\n\r\n" }, StringSplitOptions.None);

【讨论】:

    猜你喜欢
    • 2012-07-07
    • 2022-07-06
    • 2013-11-15
    • 2013-02-15
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    相关资源
    最近更新 更多