从 Javascript 中的数字中删除前导零
2022-08-30 01:47:52
可能的重复:
截断 Javascript 中字符串的前导零
在Javascript中从数字中删除前导零的最简单和跨浏览器兼容的方法是什么?
例如,如果我的文本框值为014或065,它应该只返回14或65
可能的重复:
截断 Javascript 中字符串的前导零
在Javascript中从数字中删除前导零的最简单和跨浏览器兼容的方法是什么?
例如,如果我的文本框值为014或065,它应该只返回14或65
我们可以使用四种方法进行此转换
const numString = "065";
//parseInt with radix=10
let number = parseInt(numString, 10);
console.log(number);
// Number constructor
number = Number(numString);
console.log(number);
// unary plus operator
number = +numString;
console.log(number);
// conversion using mathematical function (subtraction)
number = numString - 0;
console.log(number);
对于基元类型,最安全的最大值是 253-1(Number.MAX_SAFE_INTEGER
)。Number
console.log(Number.MAX_SAFE_INTEGER);
现在,让我们考虑数字字符串“099999999999999999999”,并尝试使用上述方法进行转换
const numString = '099999999999999999999';
let parsedNumber = parseInt(numString, 10);
console.log(`parseInt(radix=10) result: ${parsedNumber}`);
parsedNumber = Number(numString);
console.log(`Number conversion result: ${parsedNumber}`);
parsedNumber = +numString;
console.log(`Appending Unary plus operator result: ${parsedNumber}`);
parsedNumber = numString - 0;
console.log(`Subtracting zero conversion result: ${parsedNumber}`);
所有结果都是不正确的。
这是因为,在转换时,numString 值大于 。即Number.MAX_SAFE_INTEGER
99999999999999999999 > 9007199254740991
这意味着在假设可以转换为类型的情况下执行的所有操作都将失败。string
number
对于大于 253 的数字,最近添加了原始 BigInt
。检查此处的浏览器兼容性。BigInt
转换代码将如下所示。
const numString = '099999999999999999999';
const number = BigInt(numString);
parseInt
如果基数未定义或为 0(或不存在),JavaScript 将假定以下内容:
究竟选择哪个基数取决于实现。ECMAScript 5 指定使用 10(十进制),但并非所有浏览器都支持此功能。
因此,在使用 parseInt 时,请始终指定基数
正则表达式:
"014".replace(/^0+/, '')