我有一个只包含数字的字符串,但该字符串不能以零开头。
我首先想到的是:
let myNumber = "0052";
myNumber = myNumber.split('');
for (let i = 0; i < myNumber.length; i++) {
if (myNumber[i] == '0') {
myNumber.splice(i, 1);
i--;
} else {
break;
}
}
console.log(myNumber);
console.log('result:', myNumber.join(''));
&#13;
一切都很好。
我认为如果不使用经典的for循环,可能会有另一种方式。 我对for-of循环的尝试失败了。一旦我删除了我的数组的第一个条目,循环的索引就不会重置,所以它会跳过我的数组中的第二个零。这是代码:
let myNumber = "0052";
myNumber = myNumber.split('');
for (let n of myNumber) {
if (n == '0') {
myNumber.shift();
} else {
break;
}
}
console.log(myNumber);
console.log('result:', myNumber.join(''));
&#13;
这个问题的其他解决方案是什么?有更高性能的解决方案吗?
答案 0 :(得分:5)
您可能正在寻找的是parseInt
功能。
const result = parseInt("0052", 10).toString();
console.log(result);
我还添加了toString()
来将数字转换为字符串。 parseInt
也接受第二个参数 - 基数。 Read more about parseInt
答案 1 :(得分:4)
Regexp:/^[0]+/
let myNumber = "0000000520";
console.log(myNumber.replace(/^[0]+/, ''))
答案 2 :(得分:1)
使用
parseInt('0052') = 52
或
parseFloat('0052.29') = 52.29
如果您的号码是浮动类型:
答案 3 :(得分:0)
我的方法比你的方法简单明了:)
while(myNumber.length){
if(myNumber.charAt(0) == '0')
myNumber = myNumber.substring(1, myNumber.length);
}