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

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

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

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

【问题讨论】:

    标签: javascript jquery replace


    【解决方案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】:

      你们都忘了量词 n{X,} http://www.w3schools.com/jsref/jsref_regexp_nxcomma.asp

      这里最好的解决方案

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

      【讨论】:

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