繁体   English   中英

如何计算前导零?

[英]How to count leading zeros?

我正在尝试制作一个正则表达式来计算以下格式的前导零: 010010001

这些是我需要以某种方式处理的一些 id。

我试过这样的事情:

id.split(/^0{1,3}/)

例如,如果我的输入是0001 ,我希望看到这样的内容:

['0', '0', '0']

但我得到了这个:

["", "1"]

我只关心前导零,我无法计算在我指定的格式之后的那些。

你可以在没有任何正则表达式的情况下拥有它:

 let somenumber = "0001"; function count_leading_zeros(some_input) { let splitted = some_input.split(""); let i = 0; while (splitted.shift() == 0) { i += 1; } return i; } console.log(count_leading_zeros(somenumber));

使用匹配,这样你就可以得到零。 这样,您可以读取长度。 如果没有匹配,则返回 null。

var str = "0001"
var match = str.match(/^0+/)
var level = match ? match[0].length : 0

在一行中

var str = "0001"
var level = (str.match(/^0+/) || [''])[0].length

String#split将字符串分成正则表达式匹配字符串部分的部分。 因此,您得到的结果是预期的, 001/^0{1,3}/ (前 1、2 或 3 个零)拆分时将产生一个空字符串(在字符串的开头)和1

您想使用始终匹配字符串开头任意数量的零的正则表达式:

 console.log('001'.match(/^0*/)[0].length); // => 2 console.log('01'.match(/^0*/)[0].length); // => 1 console.log('1'.match(/^0*/)[0].length); // => 0

无需使用|| 或任何类型的保护,因为/^0*/始终匹配,字符串开头的任意数量的零( 0* )( ^ )。

使用 lodash:

_.takeWhile(str, (c) => c === '0').length

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM