【问题标题】:Remove extra whitespaces, but keep new lines using a regular expression in C# [duplicate]删除多余的空格,但在 C# 中使用正则表达式保留新行 [重复]
【发布时间】:2014-11-15 06:14:42
【问题描述】:

我正在使用这个正则表达式,

Regex.Replace(value.Trim(), @"\s+", " ");

将多余的空格修剪并最小化为一个空格。
问题在于它还会从文本中删除新行

如何修复正则表达式以使其保留新行?

【问题讨论】:

    标签: c# regex newline whitespace


    【解决方案1】:

    我还没有设法在 C# 中对其进行测试,但以下适用于 http://www.regexr.com/

    Regex.Replace(value.Trim(), @"[^\S\r\n]+", " ");
    

    感谢Match whitespace but not newlines

    正则表达式通过匹配非空格或返回/换行符的否定字符类来工作。

    【讨论】:

    • 是的,正则表达式可以在 C# 中工作
    【解决方案2】:

    在空白类中排除 CRLF 的 [^\S\r\n]+[^] 是一个否定类。 \S 是一个否定类,等于 not [ space, tab, ff, lf, cr ]

    关于否定类的事情是它被排除在组之外并适用于每个成员 分别在群里。就像数学一样,两个负数等于一个正数。

    不是不是空格=[^\S]=[\s]

    但是,否定条件适用于下一个类项目以及下一个......

    因此,既然包含了空白,您可以从类中排除特定的空白项。 [^\S\r\n] 表示除 CR 或 LF 之外的所有空格。

    【讨论】:

      猜你喜欢
      • 2018-07-11
      • 2023-04-03
      • 2019-06-21
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-22
      相关资源
      最近更新 更多