2009-06-01 92 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 

在字符類方括號中有空格和製表符。我用'\'引用了'+',如果您的正則表達式引擎使用「+」表示「一個或多個」而不是文字「+」,則可能不需要。