我有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
变得容易多了String.prototype.replaceAll()
。查看浏览器对内置方法的支持。
const str = '185-51-671';
console.log(str.replaceAll('-', ''));
Run Code Online (Sandbox Code Playgroud)