2010-07-20 65 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