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

如何使用JavaScript从字符串中删除空格?,javascript,text,Javascript,Text,如何删除字符串中的空格?例如: 输入: '/var/www/site/Brand new document.docx' '/var/www/site/Brandnewdocument.docx' 输出: '/var/www/site/Brand new document.docx' '/var/www/site/Brandnewdocument.docx' 这个 范例 var str='/var/www/site/Brand new document.docx'; 文件。写入(str.

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

输入:

'/var/www/site/Brand new document.docx'
'/var/www/site/Brandnewdocument.docx'
输出:

'/var/www/site/Brand new document.docx'
'/var/www/site/Brandnewdocument.docx'
这个

范例

var str='/var/www/site/Brand new document.docx';
文件。写入(str.replace(/\s/g',)
var a=b=“/var/www/site/Brand new document.docx”;
console.log(a.split(“”).join(“”));
console.log(b.replace(/\s/g')

注意:尽管使用“g”或“gi”删除空格,但两者的行为相同

如果我们在replace函数中使用“g”,它将检查是否完全匹配。但如果我们使用“gi”,它会忽略大小写敏感度


供参考。

以下@rsplak回答:实际上,使用拆分/连接方式比使用regexp快。看表演

所以

var result=text.split(“”).join(“”)

运行速度比

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

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


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


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

最短和最快的
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。所有浏览器中速度最慢的是
splitjoin
解决方案。将
更改为
\s
或将
+
i
添加到regexp会降低处理速度

长线 对于约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、
您可以在您的计算机上运行它:

Regex+Replace()

尽管正则表达式的速度可能较慢,但在许多用例中,开发人员一次只操作几个字符串,因此考虑速度是无关紧要的。尽管//比/\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()

使用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, '');
var str='/var/www/site/Brand new document.docx';
文件。写入(str.replace(/\s\/g',);
----------
您的_字符串='Hello world';
单词数组=你的字符串拆分(“”);
字符串_不带_空格=“”;

对于(i=0;i使用
replaceAll
似乎是最简单最干净的方法。(我不能保证最快的速度)

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

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


如果没有regexp,它可以正常工作

input = input.replace(' ', '');
为什么不干脆用这个!?
这很简单,速度更快!

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

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

@Gaurav我在SO上查到了类似的答案,我看到的
.replace(/\s+/g,”)
更多。这和我的答案有区别吗?我真傻,我觉得
.replace(“”,)
会有用。非常感谢!原始答案涉及(Sime在编辑中链接到)
+
只有60票,如果有人想信任他/她,请小心不要意外地引用你的正则表达式,例如
.replace('/\s+/g','')
,因为它会试图找到那个文本字符串。这让我之前大吃一惊……请记住
\s
(空白)与普通空格不同。这还包括换行符、回车符、制表符、垂直制表符、换行符和其他字符。有关详细信息,请查看。我喜欢拆分()和联接()。拆分(“”)和联接不会删除\n\t空白字符,另一种解决方法是.split(“”)。map(c=>c.trim()).join(“”)在我的Firefox 61上运行了测试,只快了2.19%。有趣的是,split-join方法现在在Firefox 73上对我来说是最快的,其次是regexp1a,慢了53%。我的解决方案是“ahm-ed”。split(“”)。filter(e=>e.trim().length)。join(“”)
@C.K为什么比
ahm-ed更好.replace(//\s+/g',);
?对我来说,这似乎是最慢的(在当前的Chrome中)和最不可读的解决方案。我认为解释正在发生的事情并不是很有用,因为你可以轻松地将它包装成一个名为removeWhiteSpace(string){return string.replace(//g',)}的函数请不要只发布代码作为答案,还要解释代码的作用以及它是如何解决问题的。带有解释的答案通常更有用、质量更好,并且更有可能吸引更多的选票。对于那些喜欢For循环的人!!!:)这只会替换一次。OP的示例中有两个空格。
input = input.replace(' ', '');
'/var/www/site/Brand new document.docx'.replaceAll(' ', '');