代码之家  ›  专栏  ›  技术社区  ›  khelll

如何解析前导为0的字符串

  •  27
  • khelll  · 技术社区  · 15 年前

    如何将“09”解析为9?

    6 回复  |  直到 11 年前
        1
  •  53
  •   Gabe Moothart    15 年前

    包括基数:

    parseInt("09", 10);
    
        2
  •  11
  •   codeulike    14 年前

    这让我发疯了- parseInt("02") 工作而不是 parseInt("09") .

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

    parseInt("09", 10);
    

    这种行为有很好的解释 here

    …以javascript数字开头 零被认为是八进制和 八进制中没有08或09,因此 问题。

        3
  •  5
  •   Kieran Pilkington    14 年前

    您还可以执行以下操作:

    Number('09') => 9

    这将返回ie7、ie8、ff3、ff4和chrome 10上的整数9。

        4
  •  5
  •   TDot    12 年前

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

    (function(){
      var oldParseInt = parseInt;
      parseInt = function(){
        if(arguments.length == 1)
        {
          return oldParseInt(arguments[0], 10);    
        }
        else
        {
          return oldParseInt.apply(this, arguments);
        }
      }
    })();
    
        5
  •  2
  •   JCasso    15 年前
    parseInt("09",10);
    

    这里返回9。

    这很奇怪。

    alert(parseInt("09")); // shows 9. (tested with Opera 10)
    
        6
  •  2
  •   Praveen    11 年前
    parseInt("09", 10);
    

    parseInt(parseFloat("09"));