我从数据库中获取一个值,我将其重新用作数字,这个数字具有前导零,并且仅限于4位,这意味着格式为0001
或0010
或{ {1}}或0100
我从零开始计数,当我将1添加到此数字时,前导零以我添加的方式消失为例
1000
答案 0 :(得分:2)
数字没有前导零;那是一个字符串的东西。
如果您从数据库中获取的值是一个字符串,则需要执行以下操作:
获取其长度
使用parseInt(theString, 10)
在基数10中进行解析(在某些引擎上,前导零使其认为应使用基数为8)
添加一个(从不需要对实际数字使用parseInt
,因此它只是+ 1
而不是+ parseInt(1)
)
将其转换为字符串
在循环中将字符串添加到字符串的开头,直到它与原始字符串一样长
没有内置的填充功能可以为你做#5,你要么必须写一个或做一个像theString = "00000000000000000000000".substr(theString.length - desiredLength) + theString
这样的黑客(确保初始字符串有足够的零来覆盖你想要的东西)覆盖)。
答案 1 :(得分:2)
// 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"
答案 2 :(得分:0)
这是您可以使用的功能。 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));
答案 3 :(得分:0)
我今天创建了一个可用于此的功能。
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)