【发布时间】:2015-06-18 12:37:33
【问题描述】:
这段代码的目的是编写一个递增字符串的函数,以创建一个新字符串。如果字符串已经以数字结尾,则该数字应增加 1。如果字符串不以数字结尾,则应将数字 1 附加到新字符串中。例如"foo123" --> "foo124" 或 "foo" --> "foo1"。 使用下面的代码,我几乎所有的测试用例都通过了,除了“foo999”的角落案例没有打印出“foo1000”。我知道应该有办法使用正则表达式来解决我的问题,但我不太熟悉它。有人可以帮忙吗?
function incrementString (input) {
var reg = /[0-9]/;
var result = "";
if(reg.test(input[input.length - 1]) === true){
input = input.split("");
for(var i = 0; i < input.length; i++){
if(parseInt(input[i]) === NaN){
result += input[i];
}
else if(i === input.length - 1){
result += (parseInt(input[i]) + 1).toString();
}
else{
result += input[i];
}
}
return result;
}
else if (reg.test(input[input.length - 1]) === false){
return input += 1;
}
}
【问题讨论】:
-
你的函数太复杂了,你应该用
replace方法加上一个lambda作为替代。
标签: javascript regex string numbers increment