Remove all multiple spaces in Javascript and replace with single space
如何在javascript中自动用单个空间替换多个空间的所有实例?
我试过链接一些s.replace,但这似乎并不理想。
我也在使用jquery,以防它是一个内置的功能。
可以使用正则表达式替换:
1
| str = str.replace(/ +(?= )/g,''); |
学分:上面的regex是从regex中提取的,用一个空格替换多个空格。
- 这也行。s=s.replace(/+/g,"");
- 非常正确:)——插入更多字符--
- 如果您的str是undefinied或NaN的话,str= ''+str.replace(/ +(?= )/g,'')是更好的解决方案。
- 我正在从一个txt文件(通过ajax)中读取数据,@infinitiesoop regex运行良好,但josiah没有。
- 这对我没用。但是@redexp做到了。
- 我知道这是一个旧线程,但这个解决方案对我不起作用,我使用了下划线字符串的clean()函数。github.com/epeli/underline.string cleanstring--字符串
- 可能有用:string.replace(/ss+/g,");它包括所有空格,而不仅仅是双空格。还有标签、换行等。阅读更多:debuggex.com/craitsheet/regex/javascript
- 这可能很慢:jspef.com/removing-multiple-spaces
对于正则表达式,可以使用许多选项来完成这一任务。一个很好的例子是:
1
| str.replace( /\s\s+/g, ' ' ) |
有关这个确切问题的完整讨论,请参见此问题:regex将多个空格替换为一个空格
你们都忘记了量词n x,http://www.w3schools.com/jsref/jsref_regexp_nxcomma.asp
这里是最佳解决方案
1
| str = str.replace(/\s{2,}/g, ' '); |
- 您还可以引用正则表达式网站来获取各种regex风格和完整参考。
- 与简单的+相比,使用括号量词有什么改进?
- @一些非描述性用户/\s+/g也替换了单个空间(不需要这样做),但/\s\s+/g或/\s{2,}/g只替换了多个空间。
- @当然,你是对的,但是,除了美学,我怀疑这在绝大多数的应用中是值得注意的。在Veery大文件中,性能可能会略有提高?在所有其他情况下,我会说,加号比括号更方便。
- @一些非描述性用户我同意+比括号更方便。至于性能,单个空间比双空间慢三分之一:jspef.com/removing-multiple-spaces
- @aalex-gabi:感谢您在性能提升上坚持数字。这无疑是一个更大任务的先头部队。但是,请原谅我的顽固,在大多数申请中你不会注意到。;)
- 太好了,谢谢!!
也可以不使用正则表达式进行替换。
1
| while(str.indexOf(' ')!=-1)str.replace(' ',' '); |
- 也工作…问题是:哪个效率更高?此版本或regex版本。我更喜欢雷杰克斯,因为我们练习得不够多。
- 我不知道-如果你没有匹配项,这个方法更有效。如果你有很多火柴,有人做错了。
- 我希望这是一把强调区别的小提琴。它清楚地输出正则表达式在任何情况下都至少和循环版本一样快。不要说循环版本不好,只要指出必须始终考虑产品的可维护性和演进。