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

JLu*_*uiz 499 javascript text

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

输入:__CODE__
输出:__CODE__

谢谢

Šim*_*das 1078

这个?

str = str.replace(/\s/g, '');
Run Code Online (Sandbox Code Playgroud)

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

document.write( str.replace(/\s/g, '') );
Run Code Online (Sandbox Code Playgroud)


更新:根据这个问题,这个:

str = str.replace(/\s+/g, '');
Run Code Online (Sandbox Code Playgroud)

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

正则表达式

\s是"whitespace"的正则表达式,g是"全局"标志,意味着匹配ALL \s(空格).

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

作为旁注,您可以将单引号之间的内容替换为您想要的任何内容,这样您就可以用任何其他字符串替换空格.

  • 愚蠢的我,我的印象是`.replace(' ','')` 会起作用。非常感激! (2认同)
  • 涉及的原始答案(Sime在他的编辑中链接)`+`只有60票,如果有人想要归功于他/她http://stackoverflow.com/a/5964427/4258817 (2认同)
  • 小心不要意外引用您的正则表达式,例如`.replace('/\s+/g', '')`,因为它会尝试找到该文字字符串。这让我之前绊倒了... (2认同)

rsp*_*lak 60

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

console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') ); 
Run Code Online (Sandbox Code Playgroud)

两种方法!

  • split(' ') 和 join 不会删除 \n , \t 空白字符,另一种解决方法是 a.split('').map(c =>c.trim()).join('') (4认同)
  • 我喜欢split()和join(). (3认同)

小智 23

您还可以使用JS最新的字符串方法之一:replaceAll

'/var/www/site/Brand new document.docx'.replaceAll(' ', '');
Run Code Online (Sandbox Code Playgroud)


Min*_*tel 21

关注@rsplak回答:实际上,使用split/join方式比使用regexp更快.查看性能测试用例

所以

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

运作速度比

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

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


另一方面,\s+处理更多种类的空间字符.在使用\n\t,它也匹配\u00a0字符,这是 在使用文本时输入的内容textDomNode.nodeValue.

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


Kam*_*ski 18

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


基准测试:

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

短字符串

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

在此处输入图片说明

所有浏览器上最快的解决方案是/ /g(regexp1a)-Chrome 17.7M(操作/秒),Safari 10.1M,Firefox 8.8M。所有浏览器中最慢的是split-join解决方案。更改\s或添加+i向正则表达式减慢处理速度。

长弦

对于大约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


MD *_*YON 18

简单的方法

someString.replace(/ /g, '');
// or
someString.replace(/\s/gm, '');
Run Code Online (Sandbox Code Playgroud)

  • 这只会替换一次出现的情况。OP 的示例中有两个空格。 (2认同)

Mel*_*man 9

如果没有 regexp,它只适用于一次。

input = input.replace(' ', '');
Run Code Online (Sandbox Code Playgroud)

这更快更简单!在某些情况下可以帮助你们中的一些人。

  • 因为它只删除一个空格。ReplaceAll 会删除所有内容,但浏览器支持会更差。 (8认同)

Muh*_*hir 8

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

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

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

alert(input);
Run Code Online (Sandbox Code Playgroud)

点击此处查看工作示例