问题描述
在以下代码中,newId 的值是 SLP000001。 此代码每次运行时都会为该值增加增量。 例如,运行代码后的下一个值将是 SLP000002 等等。 问题是当值达到 SLP000008 时运行代码后,它再次从 SLP000001 开始。 我想继续到 SLP000009、10、11、12 等等。 请指导。 我是 appscript 编码的新手
function myFunction() {
var newId = sheet1.getRange(sheet1.getLastRow(), 2, 1, 1).getValue();
var splitting = newId.match(/[a-z]+|[^a-z]+/gi);
var firstPart = splitting[0];
var secondPart = splitting[1] ;
var increment = parseInt(secondPart)+1;
var combined = firstPart+"00000"+increment;
}
1楼
OP 报告parseInt('00008');
返回 0(零)而不是十进制 8(八)。
原因是前导零导致parseInt
假设基数为 8(而不是基数 10)。
解决方案:
var increment = parseInt(secondPart, 10)+1;
解释
parseInt
接受两个参数:
- 一个字符串(在这种情况下,'secondPart')
- 基数(数学数字系统中的基数)。
的 Mozilla javascript 文档说...在使用 parseInt 时总是指定一个基数。
证明:
- var oldparsed = parseInt('00008');
返回 0(零)
- var newparsed = parseInt('00008', 8);
返回 0(零)
- var parsedplus = parseInt('00008', 8)+1;
返回 1(一)
然而
- var oldparsed = parseInt('00008');
返回 0(零)
- var newparsed = parseInt('00008', 10);
返回 8(八)
- var parsedplus = parseInt('00008', 10)+1;
返回 9(九)