删除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 是 undefinied
或 NaN
:)
我正在从 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中的所有多个空格并替换为单个空格[重复]的主要内容,如果未能解决你的问题,请参考以下文章