我编写了一个函数,我想要一个字符串,然后返回一个只包含原始字符串中的数字字符的字符串。它
function pureNumbers() {
var result;
for (var i = 0; i < phoneNumber.length; i++) {
if (Number(phoneNumber[i]) !== NaN) {
result ? result = result + phoneNumber[i] : result = phoneNumber[i]
}
}
return result;
}
pureNumbers('(123) 456-7890')
期望的结果:
result: '1234567890'
我实际得到的是:
result: 'undefined(123) 456-7890'
我知道这里有两个问题(可能更多)。
undefined
开头的result
是因为我的函数试图在第一个循环的迭代中返回结果的值,然后再分配给它。我设置了三元条件来覆盖这个,不知道它为什么不起作用...... if()
条件旨在将字符串的给定字符添加到result
,如果它是数字,但是每个角色都被添加了。任何帮助表示感谢 - 提前感谢。
答案 0 :(得分:1)
这将字符串中的所有数字作为数组,然后.join(&#34;&#34;)将字符串连接在一起,它们之间没有分隔符,即连续的数字匹配串联字符串。< / p>
var numberPattern = /\d+/g;
'something102asdfkj1948948'.match( numberPattern ).join("");
收益率&#34; 1021948948&#34;
答案 1 :(得分:0)
基本逻辑如下:
var x = 'Hello please call (727) 902-1112';
var numbers = x.match(/[0-9]/g).join('');
console.log(numbers);
结果:7279021112
现在关于一个函数,我认为这可能会对你有所帮助:
var x = 'Hello please call';
var y = 'Hello please call (727) 902-1112';
function pureNumbers(param) {
result = param.match(/[0-9]/g);
if (Array.isArray(result)) {
return result.join('');
}
return false;
}
console.log(pureNumbers(x)); // returns false
console.log(pureNumbers(y)); // returns 7279021112
注意:isArray()在旧版本的IE 9中不起作用。您必须这样做differently。
答案 2 :(得分:0)
您还可以尝试以下操作:string.replace(/[^0-9]/g, '');
或 string.replace(/\D/g,'');
删除所有非数字字符。
function pureNumbers(str) {
var num = str.replace(/[^0-9]/g, '');
return num;
}
alert(pureNumbers('(123) 456-7890'));
答案 3 :(得分:0)
我只是稍微改变了你的功能,虽然它可以通过多种方式解决,尤其是使用正则表达式。
function pureNumbers(phoneNumber) {
var result = "";
for (var i = 0; i < phoneNumber.length; i++) {
if (!isNaN(phoneNumber[i]) && phoneNumber[i].trim() !== '') {
result += phoneNumber[i];
}
}
return result;
}
希望您可以获得一些提示并改进以获得更好的解决方案。