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

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

输入:

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

输出:

'/var/www/site/Brandnewdocument.docx'
1235868 次浏览

这个?

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, '');

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

The Regex

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

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

作为补充说明,您可以将单引号之间的内容替换为您想要的任何内容,因此您可以将空格替换为任何其他字符串。

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


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

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

var input = '/var/www/site/Brand new document.docx';


//remove space
input = input.replace(/\s/g, '');


//make string lower
input = input.toLowerCase();


alert(input);

点击这里查看工作示例

  var output = '/var/www/site/Brand new document.docx'.replace(/ /g, "");
or
var output = '/var/www/site/Brand new document.docx'.replace(/ /gi,"");

注意:虽然您使用'g'或'gi'来删除空格,但两者的行为相同。

如果我们在替换函数中使用'g',它将检查精确匹配。但如果我们使用'gi',它会忽略区分大小写。

请参考点击这里

以下@rspak的回答:实际上,使用拆分/连接方式比使用正则表达式更快。参见性能测试用例

所以

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

运行速度超过

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

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


另一方面,\s+处理更广泛的空格字符。在\n\t中,它还匹配\u00a0字符,这就是 在使用textDomNode.nodeValue获取文本时打开的内容。

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

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


基准:

以下是我的结果-(2018.07.13)MacO High Sierra 10.13.3 onChrome67.0.3396(64位),Safari11.0.3(13604.5.6),Firefox 59.0.2(64位)):

短字符串

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

在此处输入图片描述

所有浏览器上最快的解决方案是/ /g(regex1a)-Chrome17.7M(操作/秒),Safari10.1M,Firefox8.8M。所有浏览器中最慢的是split-join解决方案。将 更改为\s或添加+i以正则表达式减慢处理速度。

长字符串

对于约3百万字符的字符串,结果是:

  • 注册表1a:Safari50.14 ps/sec, Firefox 18.57,Chrome8.95
  • Regexp2b:Safari38.39, Firefox 19.45,Chrome9.26
  • 拆分连接: Firefox 26.41,Safari23.10,Chrome7.98,

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

正则表达式+替换()

尽管regex可能会更慢,但在许多用例中,开发人员一次只操作几个字符串,因此考虑速度是无关紧要的。即使//比/\s/快,拥有'\s'可以更清楚地解释另一个开发人员正在发生的事情。

let string = '/var/www/site/Brand new document.docx';
let path = string.replace(/\s/g, '');
// path => '/var/www/site/Brandnewdocument.docx'

拆分()+加入()

使用Split+Join允许对字符串进行进一步的链式操作。

let string = '/var/www/site/Brand new document.docx';
let path => string.split('').map(char => /(\s|\.)/.test(char) ? '/' : char).join('');
// "/var/www/site/Brand/new/document/docx";

简单的方法

someString.replace(/ /g, '');
// or
someString.replace(/\s/gm, '');

var str = '/var/www/site/Brand new document.docx';


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




----------

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);

输出:

HelloWorld

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

'/var/www/site/Brand new document.docx'.replaceAll(' ', '')

文档

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

没有regexp,它只适用于一次发生。

input = input.replace(' ', '');

简单快捷! 在某些情况下可以帮助一些人。

您还可以使用JS的最新字符串方法之一:全部替换

'/var/www/site/Brand new document.docx'.replaceAll(' ', '');

您可以使用regex从string中删除空格

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

从字符串中删除空格的最简单方法是以这种方式使用替换

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