如何使用JavaScript从字符串中删除空格?

如何删除字符串中的空格?例如:

输入:

'/var/www/site/Brand new document.docx'

输出:

'/var/www/site/Brandnewdocument.docx'
Me无敌2020/03/12 15:37:26

尽管可以使用正则表达式删除空格,但是有一个简单的函数可以删除所有空白.trim();

var str = "abr a cadab ra";
str = str.trim();
//str = "abracadabra"
神无伽罗阳光2020/03/12 15:37:26

var a = b = " /var/www/site/Brand new   document.docx ";

console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') ); 

两种方法可以做到这一点!

ItachiHarry2020/03/12 15:37:26

以下@rsplak答案:实际上,使用拆分/联接方式比使用regexp更快。查看性能测试案例

所以

var result = text.split(' ').join('')

运行速度比

var result = text.replace(/\s+/g, '')

在小文本上这无关紧要,但是对于时间很重要的情况(例如在文本分析器中,尤其是在与用户交互时)而言,这很重要。


另一方面,\s+处理各种各样的空格字符。\n和之间\t,它还与\u00a0字符匹配,这就是 使用来获取文本时所输入的字符textDomNode.nodeValue

因此,我认为这里的结论可以如下:如果只需要替换空格 ' ',请使用split / join。如果符号类可以有不同的符号 -使用replace(/\s+/g, '')

A小卤蛋Pro2020/03/12 15:37:26

SHORTEST and FASTEST: str.replace(/ /g, '');


Benchmark:

Here my results - (2018.07.13) MacOs High Sierra 10.13.3 on Chrome 67.0.3396 (64-bit), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64-bit) ):

SHORT strings

Short string similar to examples from OP question

在此处输入图片说明

The fastest solution on all browsers is / /g (regexp1a) - Chrome 17.7M (operation/sec), Safari 10.1M, Firefox 8.8M. The slowest for all browsers was split-join solution. Change to \s or add + or i to regexp slows down processing.

LONG strings

对于大约300万个字符的字符串,结果为:

  • regexp1a:Safari 50.14 ops / sec,Firefox 18.57,Chrome 8.95
  • regexp2b:Safari 38.39,Firefox 19.45,Chrome 9.26
  • split-join:Firefox 26.41,Safari 23.10,Chrome 7.98,

您可以在计算机上运行它:https : //jsperf.com/remove-string-spaces/1