数字串不能从零开始。其他解决方案?

时间:2018-02-16 21:07:49

标签: javascript arrays for-loop

我有一个只包含数字的字符串,但该字符串不能以零开头。

我首先想到的是:



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;
&#13;
&#13;

一切都很好。

我认为如果不使用经典的for循环,可能会有另一种方式。 我对for-of循环的尝试失败了。一旦我删除了我的数组的第一个条目,循环的索引就不会重置,所以它会跳过我的数组中的第二个。这是代码:

&#13;
&#13;
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;
&#13;
&#13;

这个问题的其他解决方案是什么?有更高性能的解决方案吗?

4 个答案:

答案 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);
}

DEMO:https://jsbin.com/falejuruwu/1/edit?js,console