2010-07-20 115 views

回答

107

您可以使用正則表達式替換:

str = str.replace(/ +(?=)/g,''); 

信用:上述正則表達式是從Regex to replace multiple spaces with a single space

+30

這工作了。 s = s.replace(/ +/g,「」); – InfinitiesLoop 2010-07-20 03:54:33

+0

非常真實:) - 插入更多字符 - – Josiah 2010-07-20 04:02:12

+0

'str =''+ str.replace(/ +(?=)/ g,'')'是更好的解決方案,以防您的str未定義或' NaN' :) – Val 2011-07-04 10:08:52

31

採取有很多的你可以用它來完成這個正則表達式的選項。這將表現良好的一個例子是:

str.replace(/\s\s+/g, ' ') 

看到這個問題的充分討論這個確切的問題:Regex to replace multiple spaces with a single space

+0

謝謝這是唯一的正則表達式一個爲我工作 – 2012-09-27 17:06:02

+0

這是我嘗試過的唯一一個,它適用於我的情況。 – 2014-09-25 15:09:43

3

你也可以不用更換正則表達式。

while(str.indexOf(' ')!=-1)str.replace(' ',' '); 
+1

工作太...問題是:哪個更有效率?此版本或正則表達式版本。我有一個正則表達式的偏好,因爲我們從來沒有練習過。 – 2012-12-27 10:44:14

+0

我不知道 - 如果你沒有匹配,這種方法更有效率。如果你有很多比賽,有人做錯了。 – kennebec 2012-12-27 21:38:45

+0

這裏是一個[小提琴](http://jsfiddle.net/NickT/ScJKw/1/),我希望強調這個區別。它清楚地表明,正則表達式在所有情況下至少與循環版本一樣快。並不是說循環版本不好,只是指出必須考慮產品的可維護性和演進。 – 2012-12-28 07:59:47

18

大家忘記量詞N {X,} http://www.w3schools.com/jsref/jsref_regexp_nxcomma.asp

這裏最好的解決方案

str = str.replace(/\s{2,}/g, ' '); 
+0

你也可以引用[Regular Expression](http://www.regular-expressions.info/)網站上的各種正則表達式口味和全部參考。 – 2012-12-27 10:45:52

+1

使用括號量詞比簡單的+有什麼改進? – 2017-02-22 09:37:05

+0

@ some-non-descript-user'/ \ s +/g'也替換單個空格(不需要這個),而是'/ \ s \ s +/g'或'/ \ s {2,}/g'只替換多個空格。 – 2017-05-14 09:38:20

相關問題