Javascript 在不删除前导零的情况下递增一个数字jquery
我从数据库中获取一个值,并将其重新用作一个数字。这个数字的前导零仅限于4位,这意味着格式是Javascript 在不删除前导零的情况下递增一个数字jquery,javascript,jquery,html,Javascript,Jquery,Html,我从数据库中获取一个值,并将其重新用作一个数字。这个数字的前导零仅限于4位,这意味着格式是0001或0010或0100或1000当我将1添加到此数字时,前导零已按我添加的方式消失例如 var databasevalue = 0000; var incrementvalue = parseInt(databasevalue) + parseInt(1); 数字没有前导零;这是一个字符串的东西 如果从数据库获取的值是字符串,则需要执行以下操作: 了解它的长度 使用parseInt(字符串,10)
0001
或0010
或0100
或1000
当我将1添加到此数字时,前导零已按我添加的方式消失例如
var databasevalue = 0000;
var incrementvalue = parseInt(databasevalue) + parseInt(1);
数字没有前导零;这是一个字符串的东西
如果从数据库获取的值是字符串,则需要执行以下操作:
parseInt(字符串,10)
以基数10解析它(在某些引擎上,前导零使它认为应该使用基数8)parseInt
,所以它只是+1
而不是+parseInt(1)
)没有内置的填充函数可以为您完成#5,您必须编写一个填充函数或执行类似于
theString=“00000000000000000000000”.substr(theString.length-desiredLength)+字符串(确保初始字符串有足够的零来覆盖您想要覆盖的内容)。这里是一个可以使用的函数。min_size是字符串的长度,因此在您的示例中,“0000”min_size是4。数据库值从0开始。函数将数字转换为字符串,并检查字符串的长度。然后添加前导零,直到达到最小值。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));
var min_size=4;
var起始值=0;
函数前导零(num){
var new_num=num.toString();
对于(变量i=新的数值长度;i
我今天创建了一个函数,您可以使用它
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)
这可能会有帮助:问题是,例如9,前导零是3,如果我加1,它将是10,如果我加上原始的前导零,我将有5位数字,这不是我想要的。我理解您的解决方案的方式是获得原始零,然后将其添加到递增的值中。如果需要,请更正我wrong@HogRider:不,您记得(在#1)中,“0009”
是四位数,然后将其转换为一个数字,添加一个,将其转换为字符串(“10”
),然后在第5步中,在开始处添加所需数量的零,使其再次变为四位数——在本例中,string.length-desired length
将为-2
,因此您将得到“000000000000000000000000000000”。substr(-2)+string
,它将为您提供“0010”
。这不是bug吗?它很简单,我得到了我想要的want@HogRider:请记住,如果最终得到的值很奇怪,那是因为JavaScript引擎将数字视为八进制(以8为基数),而不是以10为基数。如果您使用的是最新版本,并且您使用的是严格模式,那么这应该不是问题;如果您使用的是旧的或松散模式,则可能是。
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)