Строка, имеющая текстовую часть и числовую часть, разделенные функцией соответствия, не увеличивает числовую часть на 1 после 8 - PullRequest
0 голосов
/ 12 февраля 2019

В следующем коде значением newId является SLP000001.Этот код добавляет приращение к значению при каждом запуске.например, следующее значение после выполнения кода будет SLP000002 и так далее.Проблема заключается в том, что после запуска кода, когда значение достигает SLP000008, оно снова начинается с SLP000001.Я хочу продолжить это до SLP000009, 10, 11, 12 и так далее.пожалуйста, руководство.Я новичок в программе кодирования

  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 Ответ

0 голосов
/ 14 февраля 2019

ОП сообщает, что parseInt('00008'); возвращает 0 (ноль) вместо десятичной 8 (восемь).Причина в том, что ведущие нули заставляют parseInt принимать базу 8 (вместо базы 10).

Решение :
var increment = parseInt(secondPart, 10)+1;

Пояснение

parseInt принимает два параметра:
- строка (в нашем случае 'secondPart')
- основание (основание в математических системах счисления).
В документации по JavaScript для parseInt написано ... всегда указывайте основание при использовании 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 (девять)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...