2009-06-01 87 views
3

我是在正则表达式之后,当有两个或更多个重复的元素时,会删除空白,只留下一个空格。连续多于一个时删除多余的空格

例如这行

The cow jumped over the moon 

其具有多个空格在一些情况下分离的话会成为

The cow jumped over the moon 

回答

8

尝试此正则表达式:

[ ]+ 

,替换为一个空间。

+0

这不会匹配标签afaik – annakata 2009-06-01 12:39:19

+1

\ s将是一个更好的代表性。 – Cerebrus 2009-06-01 12:55:19

0

我通常这样做的方式是反复用一个替换两个空格,直到找不到更多条目。这当然意味着多次传递和几轮替换,每轮都会分配和垃圾回收一个字符串,但是我发现开销比分析和执行正则表达式要少得多。即使有64个空间,也只需要7次修复。此外,典型的琴弦只有2-5个空间,所以它的工作速度更快。

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

我一直用sed来做这个。

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

在字符类方括号中有空格和制表符。我用'\'引用了'+',如果您的正则表达式引擎使用“+”表示“一个或多个”而不是文字“+”,则可能不需要。