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

2020/09/24 00:01 · javascript ·  · 0评论

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

输入:

'/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是“全局”标志,表示匹配ALL \s(空白)。

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

附带说明一下,您可以将单引号之间的内容替换为所需的任何内容,因此可以将空白替换为任何其他字符串。

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

以下@rsplak答案:实际上,使用拆分/联接方式比使用regexp更快。查看性能测试案例

所以

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

运行速度比

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

在小文本上这无关紧要,但是对于时间很重要的情况(例如在文本分析器中,尤其是在与用户交互时)而言,这很重要。


另一方面,\s+处理各种各样的空格字符。\n和之间\t,它还与\u00a0字符匹配,这就是 使用来获取文本时所输入的字符textDomNode.nodeValue

因此,我认为这里的结论可以如下:如果只需要替换空格 ' ',请使用split / join。如果符号类可以有不同的符号 -使用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',它会忽略大小写。

供参考单击这里

正则表达式+ Replace()

尽管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()

使用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";
本文地址:http://javascript.askforanswer.com/ruheshiyongjavascriptcongzifuchuanzhongshanchukongge.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!