从字符串中删除连字符的最快方法[js]

sov*_*ova 59 javascript

我有ID看起来像:185-51-671但他们最后也可以有字母,175-1-7b

我想要做的就是删除连字符,作为预处理步骤.在javascript中向我展示一些很酷的方法吗?我认为可能有很多像这样的问题,但我很想知道人们会为"只是连字符"提出什么样的优化

谢谢!

编辑:我正在使用jQuery,所以我猜.replace(a,b)可以解决问题(用b代替)

numberNoHyphens = number.replace("-","");
Run Code Online (Sandbox Code Playgroud)

还有其他选择吗?

编辑#2:

所以,万一有人想知道,正确的答案是

numberNoHyphens = number.replace(/-/g,"");
Run Code Online (Sandbox Code Playgroud)

你需要"g"这是模式开关或"全局标志",因为

numberNoHyphens = number.replace(/-/,"");
Run Code Online (Sandbox Code Playgroud)

只匹配并替换第一个连字符

Jam*_*ill 123

您需要包含全局标志:

var str="185-51-671";
var newStr = str.replace(/-/g, "");
Run Code Online (Sandbox Code Playgroud)


Cri*_*hez 10

不是更快,但是

str.split('-').join('');
Run Code Online (Sandbox Code Playgroud)

也应该工作.

如果有人想要添加和比较他们的方法,我设置了一个jsperf测试,但是任何东西都不会比这个replace方法更快.

http://jsperf.com/remove-hyphens-from-string


Pen*_*Liu 8

变得容易多了String.prototype.replaceAll()。查看浏览器对内置方法的支持。

const str = '185-51-671';
console.log(str.replaceAll('-', ''));
Run Code Online (Sandbox Code Playgroud)

  • 我的2021年的人们怎么样了!这有很多现代支持并且具有很高的可读性。str.replaceAll 应该是目前接受的答案,只要您不需要覆盖一次性或不受支持的浏览器。(RIP Internet Explorer。)如果您正在学习它,如果您需要一个空格来替换要删除的内容,只需在第二个参数中添加一个空格即可:str.replaceAll("removeeditem", " "); (2认同)

Tre*_*rey 5

var str='185-51-671';
str=str.replace(/-/g,'');
Run Code Online (Sandbox Code Playgroud)