javascript - 如何在 JavaScript 中的 new Number() 中保留前导零

标签 javascript regex string

这个问题在这里已经有了答案:





Pad a number with leading zeros in JavaScript [duplicate]

(9 个回答)


2年前关闭。




伙计们。

我在使用此功能时遇到了一些问题

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

我想用这个函数做的是在字符串末尾加 1 的数字,如果字符串没有一个,我会在末尾加一个 1。
string      expected
"foobar000" "foobar001"
"foo"       "foo1"
"foobar025" "foobar026"

我不知道是否可以用替换和正则表达式来做,我想到了一个带有循环、.length、拆分等的解决方案,但我想用正则表达式来做,如果可能的话。

问题:如何取字符串末尾的数字,前导零,并将它们相加为 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'

谢谢,节日快乐

最佳答案

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

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));

关于javascript - 如何在 JavaScript 中的 new Number() 中保留前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53962715/

相关文章:

javascript - ES6生成器中如何将第一个yield的值传递到下一个yield?

javascript - 使用逻辑的 Typescript 工厂类

javascript - Bootstrap4 dropdown with button - 获取选中的元素

javascript - 如何替换 JavaScript 中所有出现的字符串?

regex - 可以在范围内运行 Regex-Replace 而不是循环遍历 Excel 中的单元格吗?

regex - salt-stack 中的正则表达式匹配

regex - 无法找到正则表达式模式来拉取特定列

javascript - 如何用数组中的字符串替换所有出现的字符串

java - java 7 中字符串的识别和替换部分

string - 尝试在 Swift 中将输入字符串转换为整数