删除Javascript中的所有多个空格并替换为单个空格[重复]

Posted

技术标签:

【中文标题】删除Javascript中的所有多个空格并替换为单个空格[重复]【英文标题】:Remove all multiple spaces in Javascript and replace with single space [duplicate] 【发布时间】:2011-03-18 05:51:05 【问题描述】:

如何在 javascript 中自动用单个空格替换多个空格的所有实例?

我尝试链接一些 s.replace,但这似乎不是最佳选择。

我也在使用 jQuery,以防它是一个内置功能。

【问题讨论】:

【参考方案1】:

您可以使用正则表达式替换:

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

学分:以上正则表达式取自Regex to replace multiple spaces with a single space

【讨论】:

这也有效。 s = s.replace(/ +/g, " "); 非常正确 :) --插入更多字符-- str= ''+str.replace(/ +(?= )/g,'') 是更好的解决方案,以防您的 str 是 undefiniedNaN :) 我正在从 txt 文件中读取数据(通过 AJAX),@InfinitiesLoop 正则表达式运行良好,但 Josiah 没有 这对我不起作用。但是@redexp 做到了。【参考方案2】:

您可以使用许多正则表达式选项来完成此操作。一个表现良好的例子是:

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

有关此问题的完整讨论,请参阅此问题:Regex to replace multiple spaces with a single space

【讨论】:

【参考方案3】:

您也可以不使用正则表达式进行替换。

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

【讨论】:

也有效...问题是:哪个更有效?此版本或正则表达式版本。我偏爱正则表达式,因为我们练习得不够多。 我不知道-如果您没有匹配项,则此方法更有效。如果你有很多匹配项,那么有人做错了。 这是一个fiddle,我希望能强调区别。它清楚地输出正则表达式在所有情况下至少与循环版本一样快。并不是说循环版本不好,只是指出必须始终考虑产品的可维护性和演变。【参考方案4】:

你们都忘了量词 nX, http://www.w3schools.com/jsref/jsref_regexp_nxcomma.asp

这里最好的解决方案

str = str.replace(/\s2,/g, ' ');

【讨论】:

您还可以引用 Regular Expression 网站获取各种正则表达式风格和完整参考。 使用括号量词比简单的+有什么改进? @some-non-descript-user /\s+/g 也替换单个空格(不需要这个),但 /\s\s+/g/\s2,/g 仅替换多个空格。 @Aalex Gabi:当然,你是对的,但是,除了美学,我怀疑这在绝大多数应用程序中会很明显。也许在非常大的文件中会有轻微的性能提升?我想说,在所有其他情况下,加号比括号更方便。 @some-non-descript-user 我同意 + 比方括号更方便。至于性能,单格比双格慢三分之一:jsperf.com/removing-multiple-spaces

以上是关于删除Javascript中的所有多个空格并替换为单个空格[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中的变量中用空格替换制表符?

有没有更简洁的方法来删除非字母数字字符并替换空格?

仅用连字符替换单词之间的空格并删除所有其他空格[重复]

word删除文档中所有空格

正则表达式替换 HTML 文档中的空格

Javascript 5种方法实现过滤删除前后所有空格