通过 javascript/jquery 删除/截断前导零

IT技术 javascript jquery numbers zero
2021-02-20 18:12:45

建议通过 javascript,jquery 从数字(任何字符串)中删除或截断前导零的解决方案。

6个回答

您可以使用匹配字符串开头的零的正则表达式:

s = s.replace(/^0+/, '');
为什么投反对票?如果您不解释您认为错误的地方,则无法改善答案。
2021-04-23 18:12:45
@SomnathMuluk:这会让很多 JavaScript 程序员感到惊讶!
2021-05-06 18:12:45
@Somnath,jQuery 是 javascript。如果某些东西在 javascript 中有效,如果你碰巧也在使用 jQuery,它也会继续工作。
2021-05-16 18:12:45
如果您全为零,则此正则表达式有问题,"0000". 这个问题可以通过积极的前瞻来解决:.replace(/^0+/, '')
2021-05-16 18:12:45
s = s.replace(/^0+/, '') 会将 "00" 转换为 in ""(空字符串而不是带一个零的字符串),这在大多数情况下是不可取的,最好将其封装在一个函数中并添加行: if (s == "") s = "0";
2021-05-19 18:12:45

我会使用 Number() 函数:

var str = "00001";
str = Number(str).toString();
>> "1"

或者我将我的字符串乘以 1

var str = "00000000002346301625363";
str = (str * 1).toString();
>> "2346301625363"
它不适用于大于 2^53 的值。Number("009007199254740993").toString() 将是 "9007199254740992"
2021-04-28 18:12:45
好吧,面对必须删除大于“009007199254740993”的“字符串”中的前导零而不是看到解决方案的情况,我会印象更深刻……我个人更愿意对输入进行验证以告诉老兄谁打的,他可能喝醉了,不应该发送
2021-05-01 18:12:45

也许有点晚了,但我想加上我的 2 美分。

如果您的字符串总是代表一个数字,可能有前导零,您可以使用“+”运算符简单地将字符串转换为数字。

例如

x= "00005";
alert(typeof x); //"string"
alert(x);// "00005"

x = +x ; //or x= +"00005"; //do NOT confuse with x+=x, which will only concatenate the value
alert(typeof x); //number , voila!
alert(x); // 5 (as number)

如果您的字符串不代表数字并且您只需要删除 0,请使用其他解决方案,但如果您只需要它们作为数字,这是最短的方法。

仅供参考,您可以做相反的事情,如果将空字符串连接到数字,则强制数字充当字符串,例如:

x = 5;
alert(typeof x); //number
x = x+"";
alert(typeof x); //string

希望它可以帮助某人

它不适用于大于 2^53 的值。(+"009007199254740993").toString() 将是 "9007199254740992"
2021-04-24 18:12:45
在处理小数字时,这是一个非常干净的解决方案。感谢您的提示,来自 2013 年的人!=D
2021-05-14 18:12:45

既然你说“任何字符串”,我假设这也是你想要处理的字符串。

"00012  34 0000432    0035"

所以,正则表达式是要走的路:

var trimmed = s.replace(/\b0+/g, "");

这将防止丢失“000000”值。

var trimmed = s.replace(/\b(0(?!\b))+/g, "")

你可以在这里看到一个工作示例

parseInt(value) or parseFloat(value)

这会很好地工作。

伟大的,帮助了我
2021-04-26 18:12:45
虽然不是小数
2021-04-29 18:12:45
@sburke0708 - 会吗?这就是 parseFloat 所做的。
2021-05-06 18:12:45