如何解析一个以 0 开头的字符串

IT技术 javascript string parseint
2021-01-27 03:21:03

如何将Int“09”解析为9?

6个回答

包括基数:

parseInt("09", 10);

这一直让我发疯 -parseInt("02")有效但不是parseInt("09")

正如其他人所说,解决方案是指定基数 10:

parseInt("09", 10);

这种行为在这里有一个很好的解释

...在 Javascript 中,从零开始的数字被认为是八进制的,八进制中没有 08 或 09,因此存在问题。

你也可以这样做:

Number('09') => 9

这将在 IE7、IE8、FF3、FF4 和 Chrome 10 上返回整数 9。

重新实现现有的 parseInt,这样如果用一个参数调用它,那么“10”将自动作为第二个参数包含在内。

(function(){
  var oldParseInt = parseInt;
  parseInt = function(){
    if(arguments.length == 1)
    {
      return oldParseInt(arguments[0], 10);    
    }
    else
    {
      return oldParseInt.apply(this, arguments);
    }
  }
})();
parseInt("09",10);

在这里返回 9。

这很奇怪。

alert(parseInt("09")); // shows 9. (tested with Opera 10)
@JonH:你能不能看看这个:w3schools.com/jsref/jsref_parseInt.asp document.write(parseInt("010") 也在这里显示 10。
2021-03-23 03:21:03
@ MatthewCrumley-老发表评论,但究竟发生了什么- ES5消除这种行为,所以兼容的浏览器应该parseInt('08')作为基地10。
2021-04-05 03:21:03
@JonH:对。谢谢你的警告。因为他写的是 string 而不是 String 我错了。
2021-04-06 03:21:03
@JonH:这实际上不是错误。ECMAScript 允许实现将带有前导零的数字视为八进制。有些实现有,有些则没有。
2021-04-06 03:21:03
根据浏览器和版本 parseInt("09") 可以返回 0。这是一个错误。
2021-04-09 03:21:03