从Javascript中的数字中删除前导零的最简单和跨浏览器兼容的方法是什么?
e.g。如果我有一个文本框值为014或065,它应该只返回14或65
答案 0 :(得分:188)
尝试parseInt。
parseInt("065", 10);
<小时/> 第二个参数是radix,根据文档,应始终指定。 MDN说,
基数
表示上述基数的整数 串。始终指定此参数以消除读者混淆 并保证可预测的行为。不同的实现 在未指定基数时产生不同的结果 .............
.............
如果radix未定义或0(或不存在),则JavaScript假定以下内容:
- 如果输入字符串以“0x”或“0X”开头,则基数为16 (十六进制)并解析字符串的其余部分。
- 如果输入字符串以“0”开头,则基数为八(八进制)或十进制(十进制)。 究竟选择哪个基数是依赖于实现的。 ECMAScript中 5指定使用10(十进制),但并非所有浏览器都支持 这个呢。因此,在使用parseInt 时始终指定基数。
- 如果输入 string 以任何其他值开头,则基数为10 (十进制)。
例如,在某些实现中,parseInt("01803")
将产生1
。假设目标是获取1803
,请调用基数为10的parseInt,以确保在基本十进制编号系统中完成解析。即:parseInt("01803", 10)
将产生1803
。请注意,对于非整数值,parseInt()将对数字进行舍入以作为整数返回。 paseInt("018.03", 10)
会产生18
。
答案 1 :(得分:146)
正则表达式:
"014".replace(/^0+/, '')
答案 2 :(得分:20)
目前尚不清楚为什么要这样做。如果要获得正确的数值,可以使用unary +
[docs]:
value = +value;
如果您只想格式化文本,那么正则表达式会更好。这取决于你要处理的价值我会说。如果你只有整数,那么
input.value = +input.value;
也很好。当然它也适用于浮点值,但取决于你在点之后有多少位数,将它转换为数字并返回到字符串可以(至少用于显示)删除一些。