【问题标题】:.NET Regex query to find only ONE new line.NET 正则表达式查询仅找到一个新行
【发布时间】:2010-03-04 23:35:55
【问题描述】:

我有一个巨大的字符串,看起来像这样:

“文字
文字
文字
文字

文字
文字
文字
文字

文字
文字
文字
文字

"

请注意,在每个文本块之间是一个新行。另请注意,最后的文本块后面有两个新行。所以当我做一个

string[] strArray = Regex.Split(content, "\r\n");

这很好用,因为它寻找回车后跟换行的模式。但是,对于数组中的最后一个条目,它只创建一个“”(空字符串),因为它在最后一个额外的换行符上进行了拆分。

所以我想要一个正则表达式而不是“\r\n”,它将在 \r 上拆分,并且正好是一个 \n。

有什么想法吗?

【问题讨论】:

  • 也许只删除数组的最后一个元素会更容易?
  • 请注意,它是 .NET 正则表达式,而不是 C# 正则表达式。

标签: c# regex split


【解决方案1】:

为什么不这样做呢?

var strArray = content.Split(new[] { "\r\n" },
    StringSplitOptions.RemoveEmptyEntries);

【讨论】:

    【解决方案2】:

    将匹配 \r\n 的正则表达式后面没有附加 \n 看起来像

    "\r\n(?!\n)"
    

    这对您有帮助吗?我认为在上面的示例中,最后一个 Text 将包含尾随的 "\r\n\n" 然后...

    【讨论】:

      【解决方案3】:

      示例字符串的结尾将是

      "文字\r\n文字\r\n文字\r\n\r\n",

      不是

      "文字\r\n文字\r\n文字\r\n\n"

      如您所想,即每行以“\r\n”结尾,即使该行为空。 (混淆可能源于 \r 被称为“回车”而 \n 被称为“换行符”)。

      如果您想拆分字符串并忽略任何空行,您可以尝试

      string[] strArray = Regex.Split(content, "(\r\n)*");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-01
        • 1970-01-01
        • 2014-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-18
        • 1970-01-01
        相关资源
        最近更新 更多