如何删除字符串中的空格?例如:
输入:
'/var/www/site/Brand new document.docx'
输出:
'/var/www/site/Brandnewdocument.docx'
" ahm ed ".split('').filter(e => e.trim().length).join('')
" ahm ed ".replace(/\s+/g, '');
好?对我来说,这似乎是最慢的(在当前的 Chrome 中)和最不可读的解决方案。 jsfiddle.net/n74qsh50
这个?
str = str.replace(/\s/g, '');
例子
var str = '/var/www/site/Brand new document.docx'; document.write(str.replace(/\s/g, '') );
更新:基于 this question,这:
str = str.replace(/\s+/g, '');
是一个更好的解决方案。它产生相同的结果,但速度更快。
正则表达式
\s
是“空白”的正则表达式,g
是“全局”标志,表示匹配所有 \s
(空白)。
+
的一个很好的解释可以在 here 中找到。
作为旁注,您可以将单引号之间的内容替换为您想要的任何内容,因此您可以将空格替换为任何其他字符串。
var a = b = " /var/www/site/Brand new document.docx "; console.log(a.split('').join('')); console.log( b.replace( /\s/g, '') );
有两种方法可以做到这一点!
最短和最快:str.replace(/ /g, '');
基准:
这是我的结果 - (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) ):
短字符串
类似于 OP 问题示例的短字符串
https://i.stack.imgur.com/RcsMa.png
所有浏览器上最快的解决方案是 / /g
(regexp1a) - Chrome 17.7M(操作/秒)、Safari 10.1M、Firefox 8.8M。所有浏览器中最慢的是 split-join
解决方案。将
更改为 \s
或将 +
或 i
添加到正则表达式会减慢处理速度。
长字符串
对于大约 300 万个字符的字符串,结果是:
regexp1a:Safari 50.14 操作/秒,Firefox 18.57,Chrome 8.95
regexp2b:Safari 38.39、Firefox 19.45、Chrome 9.26
拆分加入:Firefox 26.41、Safari 23.10、Chrome 7.98、
您可以在您的机器上运行它:https://jsperf.com/remove-string-spaces/1
遵循@rsplak 的回答:实际上,使用拆分/加入方式比使用正则表达式更快。查看性能test case
所以
var result = text.split(' ').join('')
运行速度比
var result = text.replace(/\s+/g, '')
对于小文本,这无关紧要,但对于时间很重要的情况,例如在文本分析器中,尤其是在与用户交互时,这很重要。
另一方面,\s+
处理更多种类的空格字符。在 \n
和 \t
中,它还匹配 \u00a0
字符,这就是
是在使用 textDomNode.nodeValue
获取文本时打开的。
所以我认为这里可以得出如下结论:如果只需要替换spaces ' '
,使用split/join。如果 symbol class 可以有不同的符号 - 使用 replace(/\s+/g, '')
简单的方法
someString.replace(/ /g, '');
// or
someString.replace(/\s/gm, '');
var input = '/var/www/site/Brand new document.docx';
//remove space
input = input.replace(/\s/g, '');
//make string lower
input = input.toLowerCase();
alert(input);
Click here for working example
没有正则表达式,它工作正常。
input = input.replace(' ', '');
为什么不简单地使用这个!?这更快更简单!
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',它会忽略大小写敏感。
供参考click here。
正则表达式 + 替换()
尽管正则表达式可能会更慢,但在许多用例中,开发人员一次只操作几个字符串,因此考虑速度是无关紧要的。尽管 / / 比 /\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";
使用 replaceAll
似乎是最简单最干净的方法。 (我不能保证最快)
'/var/www/site/Brand new document.docx'.replaceAll(' ', '')
请参阅docs。
replaceAll() 方法返回一个新字符串,其中模式的所有匹配项都被替换。模式可以是字符串或正则表达式,替换可以是字符串或每次匹配调用的函数。
var str = '/var/www/site/Brand new document.docx'; document.write(str.replace(/\s\/g, '')); ----------
您可以使用正则表达式从字符串中删除空格`
let str = '/var/www/site/Brand new document.docx';
let result = 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);
输出:
你好世界
.replace(/\s+/g, '')
。这和我的回答有区别吗?.replace(' ','')
会起作用。非常感激!+
的原始答案只有 60 票,如果有人也想赞扬他/她stackoverflow.com/a/5964427/4258817.replace('/\s+/g', '')
,因为它会尝试查找该文字字符串。这让我之前绊倒了...\s
(空格)与普通空格不同。这还包括换行符、回车符、制表符、垂直制表符、换页符等字符。有关更多信息,请查看 JavaScript RegExp special characters。