PolarBearGG
@PolarBearGG
I know that I know nothing

Как мне добавить к 001 единицу и чтобы стало 002?

У меня есть слово лалала001, я разделил его на лалала и 001, теперь мне нужно к 001 добавить 1 так чтобы получилось 002 и затем соединить слова чтоб получилось лалала002, как это можно сделать?
Сейчас я застрял на том, что когда в 001 добавляю 1 то получается 0011, а когда перевожу все в числа то получается просто 2 а нужно 002.
Помогите советом.
ответ:
function incrementString (strng) {
var reg =  /[0-9]/g;
var srrt = strng.split(reg);
var num = strng.replace(srrt[0],"");
var length = num.length;
num = +num+1;
var tnum = num.toString();
var tt = tnum.padStart(length, '0');
//num=num+1;
var odin = srrt[0];
var task = odin+tt;
return task;
}
  • Вопрос задан
  • 484 просмотра
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
'лалала001' => 'лалала', '001'     // разбить на две части
length = '001'.lentgh              // запомнить длину второй строки
'001' => 1,                        // привести вторую строку к чсилу
1++ => 2                           // инкрементировать число
2 => '2'                           // привести к строке
'2'.padStart(length, '0') => '002' // дополнить слева нулями
'лалала' + '002' => 'лалала002'    // соединить строки
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
sergiks
@sergiks Куратор тега JavaScript
♬♬
  1. найти позицию, с которой начинаются цифры в конце
  2. запомнить длину числа
  3. увеличить на 1 и перевести в строку
  4. при необходимости дописать нулей
  5. склеить с частью до числа
function stringInc(s) {
  var pos = s.length - 1;
  while(pos >= 0) {
    if( Math.abs(s.charCodeAt(pos) - 52.5) < 5) pos--;
    else break;
  }
  if( ++pos >= s.length) return s; // no number
  var numLength = s.length - pos;
  var numString = (parseInt(s.substr(pos)) + 1).toString();
  if( numString.length < numLength) {
    numString = ((Array(1 + numLength).join('0')) + numString).substr(-numLength);
  }
  
  return s.substr(0,pos) + numString;
}

stringInc('abc123') // abc124
stringInc('abc999') // abc1000
stringInc('abc00009') // abc00010
stringInc('009') // 010
stringInc('9') // 10
stringInc('aaa') // aaa
Ответ написан
Комментировать
Exploding
@Exploding
wtf?
Такое что-то?
var t = 001;
	t++;
	t = "00"+t; // или  ("00"+t).toString();
	alert(t); //002

Или я не понял задачи?
Ответ написан
@ElijahTr
https://codepen.io/elijah_tr/pen/yzLzZj
Само посчитает сколько нулей и т.п. :)

var _string = "лалала0002"
var _increment = 1
//
var _array = _string.split(/(\d+)/).filter(Boolean)
var _length  = _array[1].length
var _number = parseInt(_array[1], 10)

function padLeft(number, n){
    return Array(n - String(number).length + 1).join('0') + number;
}

console.log(_array[0] + padLeft(_number + _increment, _length));

Можно и подсократить..
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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