@AlpineMilk

Как увеличить число внутри строки?

Есть такая строка: section[1][title]. Нужно увеличивать число внутри строки. Здесь только регуляркой или как? Структура всегда одинаковая, слово[число][слово].
  • Вопрос задан
  • 353 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Здесь только регуляркой или как?

Конечно, использовать регулярные выражения не обязательно:

function incrementNumberInString(str) {
  for (let i = 0, iNum = -1; i < str.length; i++) {
    if ('0123456789'.includes(str[i])) {
      if (iNum === -1 && str[i - 1] === '[') {
        iNum = i;           
      }
    } else if (iNum !== -1 && str[i] === ']') {
      return str.slice(0, iNum) + (Number(str.slice(iNum, i)) + 1) + str.slice(i);
    } else {
      iNum = -1;
    }
  }

  return str;
}

Но с ними будет гораздо проще:

str.replace(/(?<=\[)\d+(?=\])/, m => ++m)
// или
str.replace(/\[\d+\]/, m => '[' + (m.slice(1, -1) - -1) + ']')
// или
str.replace(/\[(\d+)\]/, (m, g1) => `[${-~g1}]`)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы