当前位置: 代码迷 >> JavaScript >> 具有通过匹配函数分隔的文本部分和数字部分的字符串不会在 8 之后将数字部分增加 1
  详细解决方案

具有通过匹配函数分隔的文本部分和数字部分的字符串不会在 8 之后将数字部分增加 1

热度:59   发布时间:2023-06-07 16:36:11.0

在以下代码中,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; 

 }

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(九)

  相关解决方案