递增一个数字而不去掉前导零
Increment a number without getting rid of leading zeroes
我正在从数据库中获取一个值,并将其作为数字重用。这个数字有前导零,并且限制为只有4位,也就是说格式是0001
或0010
或0100
或1000
。我从零开始计数,当我把1加到这个数字上时,前面的零就消失了,我加的方式是
var databasevalue = 0000;
var incrementvalue = parseInt(databasevalue) + parseInt(1);
// I suppose databasevalue is a string
var databasevalue = "0125";
// coerce the previous variable as a number and add 1
var incrementvalue = (+databasevalue) + 1;
// insert leading zeroes with a negative slice
incrementvalue = ("0000" + incrementvalue).slice(-4); // -> result: "0126"
数字没有前导零;这是一个字符串的东西。
如果从数据库中获得的值是字符串,则需要执行以下操作:
-
获取其长度
-
使用
parseInt(theString, 10)
在基数10中解析它(在某些引擎上,前导零使它认为应该使用基数8) -
再加一个(您永远不需要在实际数字上使用
parseInt
,所以它只是+ 1
而不是+ parseInt(1)
) -
将其转换为字符串
-
将零添加到循环中字符串的开头,直到它与原始一样长
没有内置的填充函数可以为你做#5,你要么写一个,要么做一个像theString = "00000000000000000000000".substr(theString.length - desiredLength) + theString
这样的技巧(确保初始字符串有足够的零来覆盖你想要覆盖的内容)。
我今天创建了一个函数,您可以使用它。
function incrementLeadingZeroNumber(leadingZeroString, amountToIncrement){
var amountOfZerosToAdd = leadingZeroString.length;
var stringToNumber = (+leadingZeroString);
var zerosToAdd = new Array(amountOfZerosToAdd + 1).join( '0' );
var zerosAndNewNumber = zerosToAdd + ( stringToNumber + amountToIncrement )
var amountToSlice = (-1 * amountOfZerosToAdd)
var newString = zerosAndNewNumber.slice(amountToSlice)
return newString
}
//example usage
var incrementedNumber = incrementLeadingZeroNumber('0030', -10)
这里有一个您可以使用的函数。min_size是字符串的长度,因此在您的情况下,"0000"min_size为4。您的数据库值从0开始。函数将数字转换为字符串并检查字符串的长度。然后添加前导零,直到达到min_size。console.log显示以下第一个数字"0001"。在这里,很容易更改前导零的数量。
var min_size = 4;
var start_value = 0;
function leading_zero (num) {
var new_num = num.toString();
for (var i = new_num.length; i < min_size; i++) {
new_num = '0' + new_num;
}
return new_num;
}
console.log(leading_zero(start_value + 1));
相关文章:
- 递增一个数字而不去掉前导零
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 制作一个regex来验证只有一个数字的字符串
- 如何限制一个字段只接受4个数字字符作为输入,并获得'It’这是潜水警报
- 为什么这个正则表达式不't匹配最后一个字母数字字符
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- 如何拆分一个整数和产生的所有数字来创建一个新数字
- 如何使用至少一个数字、一个大写字母和6-20个字符验证密码
- 当与另一个实例进行比较时,我的类实例如何隐式返回数字
- 简单的Javascript方式,在输入字段的每5位数字后添加一个空格
- 有没有办法在里面看到一个数字'的64位浮点IEEE754表示
- PHP函数识别3个数字中最低的一个并更改其类
- 我如何解析二's是一个数字的补码字符串
- 为什么我需要在这里输入var,为什么它会给我一个数字作为答案?(Javascript)
- 在我的网站上创建一个在1-10之间不断变化的数字时遇到了问题.Javascript
- 如何获取一个以零开头的数字的位数
- 如何创建一个确定2个数字之间值的函数
- 当我添加一个新数字时,如何获得一些数字的即时平均值
- 为什么 JavaScript 如果一个数字有一个前导零,就将其视为八进制