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

输入:

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

输出:

'/var/www/site/Brandnewdocument.docx'

当前回答

最短和最快:str.replace(/ /g, ");


基准:

以下是我的结果- (2018.07.13)MacOs High Sierra 10.13.3在Chrome 67.0.3396(64位),Safari 11.0.3 (13604.5.6), Firefox 59.0.2(64位)):

短的字符串

短字符串类似于OP问题中的例子

在所有浏览器上最快的解决方案是/ /g (regexp1a) - Chrome 17.7M(操作/秒),Safari 10.1M, Firefox 8.8M。对于所有浏览器来说,最慢的是拆分连接解决方案。更改\s或向regexp添加+或i会降低处理速度。

长字符串

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

regexp1a: Safari 50.14 ops/sec, Firefox 18.57, Chrome 8.95 regexp2b: Safari 38.39, Firefox 19.45, Chrome 9.26 火狐26.41,Safari 23.10, Chrome 7.98,

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

其他回答

以下@rsplak的回答:实际上,使用分割/连接的方式比使用regexp更快。请参见性能测试用例

So

Var result = text。(' ') . join ()

运行速度比

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

对于小文本,这是不相关的,但对于时间很重要的情况,例如在文本分析器中,特别是在与用户交互时,这是重要的。


另一方面,\s+可以处理更广泛的空格字符。在\n和\t中,它也匹配\u00a0字符,这就是 当使用textDomNode.nodeValue获取文本时,会被返回。

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

这个吗?

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

例子

var str = '/var/www/site/Brand new document.docx'; document.write( str.replace(/\s/g, '') );


更新:基于这个问题,如下:

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

是更好的解决方案。它产生相同的结果,但速度更快。

正则表达式

\s是“空白”的正则表达式,g是“全局”标志,意思是匹配所有(空白)。

关于+的一个很好的解释可以在这里找到。

作为旁注,您可以将单引号之间的内容替换为您想要的任何内容,因此您可以将空白替换为任何其他字符串。

从字符串中删除空格最简单的方法是使用replace

let str = '/var/www/site/Brand new document.docx';
let result = str.replace(/\s/g, '');

使用replaceAll似乎是最简单、最干净的方法。(我不能保证最快)

“/var/www/site/Brand new document.docx”。替代品(',')

见文档。

replaceAll()方法返回一个新字符串,其中模式的所有匹配项都被替换。模式可以是字符串或RegExp,替换可以是为每个匹配调用的字符串或函数。

your_string = 'Hello world';
words_array = your_tring.split(' ');

string_without_space = '';

for(i=0; i<words_array.length; i++){
    new_text += words_array[i]; 
}

console.log("The new word:" new_text);

输出:

你好世界