@antbelogurov

Как изменить число внутри строки с сохранением ведущих нулей?

Как перевести строку в число с сохранением нулей?
Есть строка, например 'string001'.
Надо прибавить какое-то число.
Получил просто цифры:
s.replace(/[a-z,A-Z]/g, "")
Затем планировал перевести в число и прибавить, но нули слетают и получается 'string2'.
  • Вопрос задан
  • 538 просмотров
Решения вопроса 3
0xD34F
@0xD34F Куратор тега JavaScript
const add = (str, val) =>
  str.replace(/\d+$/, m => `${+m + val}`.padStart(m.length, 0));


add('string0001',    1) // 'string0002'
add('string1010',   99) // 'string1109'
add('string2345', 6789) // 'string9134'

Если при переполнении не должно происходить увеличения количества разрядов (т.е., string99 + 1 должно быть равно string00, а не string100), то после вызова padStart добавьте .slice(-m.length).
Ответ написан
Комментировать
Aetae
@Aetae Куратор тега JavaScript
Тлен
Вручную:
s.replace(/\d+$/, str => {
  const num = String(parseInt(str) + 1);
  return '0'.repeat(Math.max(str.length - num.length, 0)) + num;
});
Ответ написан
Комментировать
fallus
@fallus
const myNumber = 30 // число, которое нужно прибавить
'string0001ddf'.replace(/\d+/g, num => {
    const sum = num * 1 + myNumber; // 1 + 30
    let zeroCount = num.length - sum.toString().length // Кол-во нулей вначале, исходя из полученного числа 0001
    // Если длина строки суммы больше, чем исходное число
    if(zeroCount < 0){
        // то нули не добавляем
        zeroCount = 0
    }
    return '0'.repeat(zeroCount) + sum;
})
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
samodum
@samodum
Какой вопрос - такой и ответ
google: js string format
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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