如何在字符串中去除空格?例如:
输入:
'/var/www/site/Brand new document.docx'
输出:
'/var/www/site/Brandnewdocument.docx'
如何在字符串中去除空格?例如:
输入:
'/var/www/site/Brand new document.docx'
输出:
'/var/www/site/Brandnewdocument.docx'
这个?
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
是"全局"标志,意味着匹配所有的 \s
(空白字符)。
+
的一个很好的解释可以在这里找到。
另外需要注意的是,你可以将单引号之间的内容替换为任何你想要的内容,因此可以用任何其他字符串替换空白字符。
.replace(/\s+/g, '')
。这种方法和我的回答有什么区别吗? - Šime Vidas.replace(' ','')
会起作用。非常感谢! - Kelderic.replace('/\s+/g', '')
,因为它会尝试查找该字面字符串。这曾经让我困扰过... - RTF最短和最快的: 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 (operation/sec), Safari 10.1M, Firefox 8.8M。所有浏览器中最慢的是 split-join
解决方案。将
更改为 \s
或在正则表达式中添加 +
或 i
将会降低处理速度。
对于大约 ~3 百万个字符的字符串,结果如下:
您可以在自己的计算机上运行它: https://jsperf.com/remove-string-spaces/1
var a = b = " /var/www/site/Brand new document.docx ";
console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') );
有两种方法可以做到这一点!
以下是@rsplak的回答:实际上,使用split/join方法比使用正则表达式更快。请参考性能测试test case
所以:
var result = text.split(' ').join('')
比
var result = text.replace(/\s+/g, '')
要快一些。这对于小文本来说不太相关,但对于时间重要的情况非常重要,例如在与用户交互的文本分析器中。
另一方面,\s+
可以处理更广泛的空格字符。它不仅匹配 \n
和 \t
,还匹配 \u00a0
字符,而这就是使用 textDomNode.nodeValue
获取文本时会转换为的
字符。
所以我认为可以得出以下结论:如果您只需要替换 空格 ' '
,请使用 split/join。如果可能出现不同的 符号类别 符号,请使用 replace(/\s+/g, '')
。
你还可以使用JavaScript最新的字符串方法之一:replaceAll
'/var/www/site/Brand new document.docx'.replaceAll(' ', '');
简单的方法
someString.replace(/ /g, '');
// or
someString.replace(/\s/gm, '');
someString.replace(/\s/gm, '');
。 - MD SHAYONvar input = '/var/www/site/Brand new document.docx';
//remove space
input = input.replace(/\s/g, '');
//make string lower
input = input.toLowerCase();
alert(input);
没有正则表达式,它仅适用于一个出现的情况。
input = input.replace(' ', '');
这更快,因为它更简单!在某些情况下可能对你有帮助。
replace
takes a RegExp
or a string as its first argument which is known as pattern
. If pattern
is a string, only the first occurrence will be replaced. I would either go for a RegExp
or for replaceAll
- BonisTech var output = '/var/www/site/Brand new document.docx'.replace(/ /g, "");
or
var output = '/var/www/site/Brand new document.docx'.replace(/ /gi,"");
let str = '/var/www/site/Brand new document.docx';
let result = str.replace(/\s/g, '');
"ahmed"
拆分成字符数组,过滤掉空格,然后再将其组合成一个新的字符串。 - U.A" ahm ed ".replace(/\s+/g, '');
更好?对我来说,它似乎是最慢(在当前的Chrome中)和最难读的解决方案。https://jsfiddle.net/n74qsh50/ - Mark Baijens