如何在JavaScript中的新Number()中保留前导零

Dan*_*l C 2 javascript regex string

家伙.

我有这个功能的一些问题

const incrementString = str => {
  if (!str.match(/[\d+]$/)){
    return str += 1
  } else{
    return str.replace(/[\d+]$/, ch => new Number(ch) + 1)
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用该函数的是字符串末尾的数字+ 1,如果字符串没有,我将在最后添加1.

string      expected
"foobar000" "foobar001"
"foo"       "foo1"
"foobar025" "foobar026"
Run Code Online (Sandbox Code Playgroud)

我不知道是否可以使用replace和regex来实现它,我想到了一个包含循环,.length,split等的解决方案......但是我想用正则表达式来做,如果可能的话.

问题:我怎样才能取字符串末尾的数字,前导零,并将它们加1?这是我的功能不良行为的一些例子

Expected: 'foobar011', instead got: 'foobar11'
Test Passed: Value == 'foo1'
Expected: 'foobar002', instead got: 'foobar2'
Test Passed: Value == 'foobar100'
Test Passed: Value == 'foobar100'
Test Passed: Value == '1'
Run Code Online (Sandbox Code Playgroud)

谢谢和快乐的圣日

Nin*_*olz 6

您可以存储数字字符串的长度,并在递增所需的前导零后应用.

function increment(s) {
    var [left, right = '0'] = s.split(/(\d*$)/),
        length = right.length;

    return left + (+right + 1).toString().padStart(length, '0');
}

console.log(['foobar000', 'foo', 'foobar025'].map(increment));
Run Code Online (Sandbox Code Playgroud)

  • 这是[解构分配](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment). (2认同)