使用Javascript和Jquery将字符串转换为整数

时间:2015-12-15 05:00:20

标签: javascript jquery

我需要一个帮助。我有一个值('ie-001'),其数据类型为varchar,我将其转换为整数,然后在每次DB输入时添加1。我做了类似下面的事情。

var newcode=parseInt(response.data.code)+1;

此处response.data.code包含代码001,它来自DB.first用户从db获取最新代码(i.e-001)并递增1然后存储在DB中。这种情况我得到的新代码值是2,但我应该得到002,'003',...等等。请帮助我。

4 个答案:

答案 0 :(得分:3)

使用小功能:

<script>
function pad(n, width, z) {
  z = z || '0';
  n = n + '';
  return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}

var len = response.data.code.length;
var newcode=parseInt(response.data.code)+1;
alert(pad(newcode, len));
</script>

JSFiddle

答案 1 :(得分:1)

递增后再次执行填充

var originalLength = response.data.code.length; //to ensure that new number is of same length
var newcode=parseInt(response.data.code)+1;
while( newcode.toString().length < originalLength  ) //assuming that you want length 3
{
    newcode= "0" + newcode;
}
alert( newcode );

答案 2 :(得分:0)

当你做parseInt时,Javascript会在数字前删除00,你会得到确切的数字。

因此,如果你加1则得到2。

如果你想获得002,你应该尝试

var newcode= '00'+parseInt(response.data.code)+1;

对于10位数字,只需循环:

for(var i=0; i<10-newcode.length; i++){
    newcode = '0'+newcode;
}

但最好的解决方案是由YeldarKurgmangaliev提供的。

在jQuery中生成ID是一个可怕的错误,在数据库中执行。

答案 3 :(得分:0)

尝试使用String.prototype.replace()RegExp /(\d+$)/匹配数字字符

&#13;
&#13;
var str = "i.e-009";
str = str.replace(/(\d+$)/, function(match) {
  var n = Number(match) + 1, len = String(n).length
  // if `n` equals `9` , return `"i.e-009"`
  // if `n` equals `10`, return `"i.e-010"`
  // if `n` equals `100` rerurn `"i.e-100"`
  , res = len === 1 ? "00" : len === 2 && "0" || len === 3 && "";
  return res + n
});

console.log(str)
&#13;
&#13;
&#13;