当有多个连续空格时,请去除额外的空格。

3
我需要一个正则表达式,能够在两个或更多连续的空格中去除空格,只留下一个空格。
例如,这一行:
The cow  jumped    over the moon

在某些情况下,具有多个空格分隔单词的文本将变为:
The cow jumped over the moon
4个回答

15
string cleanedString = Regex.Replace(input, @"\s+", " ");

8

尝试使用这个正则表达式:

[ ]+

将其替换为单个空格。


1
\s 将是更好的表示方式。 - Cerebrus
啊,你说得对。显然我跳过了“空格”中的“白色”,只读了“空格”。 - Gumbo

0

我经常使用sed来完成这个任务。

$ echo "The cow  jumped    over the moon" | sed -e 's/[     ]\+/ /g'
The cow jumped over the moon

在字符类方括号中,您有一个空格和一个制表符。我用 '\' 引用了 '+',如果您的正则表达式引擎将 '+' 解释为 "一个或多个" 而不是字面上的 '+',则可能不需要这样做。

0
我通常的做法是重复将两个空格替换为一个,直到没有更多的条目。当然,这意味着需要多次通过和几轮替换,每一轮都会分配和垃圾回收一个字符串,但我发现开销比解析和执行正则表达式要小得多。即使有64个空格,也只需要7次通过就可以修复。此外,典型的字符串只有2-5个空格,所以它甚至可以更快地工作。

无论在什么情况下,只要您保持静态正则表达式,我都无法相信它会更快,而且它肯定不够灵活。 - annakata

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接