Javascript 用零填充输入数字的函数
我这里有个严重的问题。我有一个函数,用零填充用户的输入。例如,如果我输入88,它将标准化为: 88我的职能是:Javascript 用零填充输入数字的函数,javascript,regex,padding,Javascript,Regex,Padding,我这里有个严重的问题。我有一个函数,用零填充用户的输入。例如,如果我输入88,它将标准化为: 88我的职能是: export default length => (value) => { const noLeadingZeros = value.toString().replace(/(0+)/, ''); if (noLeadingZeros.length === 0) { return value; } return padLeft(noLeadingZe
export default length => (value) => {
const noLeadingZeros = value.toString().replace(/(0+)/, '');
if (noLeadingZeros.length === 0) {
return value;
}
return padLeft(noLeadingZeros, length);
};
左键为:
export default (num, len) => (
len > num.toString().length ? '0'.repeat(len - num.toString().length) + num
: num
);
我的问题是,如果我输入这样的内容:
80112345将其转换为08112345。有什么想法吗?这看起来不对:
const noLeadingZeros = value.toString().replace(/(0+)/, '');
您正在删除数字中的每一个零。。。甚至里面的人
您可以在代码中使用此正则表达式,而不是用于/(0+)/
:
/\b(0+)/
说明:\b
确保零位于单词的开头
还是这个
/^(0+)/
说明:^
确保这是字符串的开头这看起来是错误的:
const noLeadingZeros = value.toString().replace(/(0+)/, '');
您正在删除数字中的每一个零。。。甚至里面的人
您可以在代码中使用此正则表达式,而不是用于/(0+)/
:
/\b(0+)/
说明:\b
确保零位于单词的开头
还是这个
/^(0+)/
说明:
^
确保这是替换中字符串的开头,您正在替换数字中的所有零,而不仅仅是左侧的零,而且即使左侧有零,如果您要将它们添加回来,为什么要删除它们。您可以使用一个for循环,将字符串填充为零n
次(其中n
是字符串需要长度为8的位数),或者(由于@AndrewBone的注释),您可以使用.repeat()
函数为您执行以下操作:
函数padLeft(值,len){
返回“0”。重复(字符串(值)。长度 console.log(padLeft(“00000000”,8))代码>在您的替换中,您要替换数字中的所有零,而不仅仅是左侧的零,即使左侧有零,如果您要将它们重新添加,为什么要删除它们。您可以使用一个for循环,将字符串填充为零n
次(其中n
是字符串需要长度为8的位数),或者(由于@AndrewBone的注释),您可以使用.repeat()
函数为您执行以下操作:
函数padLeft(值,len){
返回“0”。重复(字符串(值)。长度 console.log(padLeft(“00000000”,8))代码>只需使用正则表达式断言该数字是有效数字
/0+/
然后获取数字中的位数:
('' + num).length;
然后把整件事放在一起
var paddedNum ='';
for (var i=0;i<8-len;i++) {
paddedNum += "0";
}
paddedNum += num;
var paddedNum='';
对于(var i=0;i,只需使用正则表达式断言该数字是有效数字
/0+/
然后获取数字中的位数:
('' + num).length;
然后把整件事放在一起
var paddedNum ='';
for (var i=0;i<8-len;i++) {
paddedNum += "0";
}
paddedNum += num;
var paddedNum='';
对于(变量i=0;i使用slice
:
let str='00000000'+88;
让resp=str.slice(-8,str.length)
console.log(resp)//00000088
使用切片
:
let str='00000000'+88;
让resp=str.slice(-8,str.length)
console.log(resp)//00000088
错误的替换…这是为了什么?如果只是要将前导零添加回中,为什么需要删除前导零?可能与锚定正则表达式重复:/^(0+)/
现在,您正在从字符串中删除所有的0
字符。在哪种情况下,number.tostring会给您前导零?错误的替换…这是为什么?如果您只是要将前导零添加回中,为什么要删除它们?可能是锚定正则表达式的重复:/^(0+)/
现在,您正在从字符串中删除所有的0
字符。在哪种情况下,数字.tostring会给您前导零?我认为他们的。repeat()
已经很不错了,像这样的东西会很不错,我认为他们的。repeat()
已经很不错了,类似的东西也会很不错