我正在尝试制作一个程序,给定一个字符串,如"hi99"它会返回"hi100",所以基本上是给最后几个位置的数字加1。
public static String incrementString(String str) {
String nonNumber = "";
String number = "";
int numberInt = 0;
for(int i = str.length() - 1 ; i >= 0 && Character.isDigit(str.charAt(i)); i--){
nonNumber = str.substring(0, i);
number = str.substring(i);
}
numberInt = Integer.valueOf(number) + 1;
number = Integer.toString(numberInt);
return (nonNumber + number);
}
我的想法是把有数字的部分和没有数字的部分分开。然后在数字部分加1。下面就是我要做的。问题在于,当Java看到001时,不是在最后一个位置加1,而忽略其余部分。结束值为2。因此,我只是想看看是否有一种方法可以避免删除这些零。
几年前也有过类似的任务。试试这个!
public String inc_string(String src){
int c = 0;
boolean inc_left = false;
StringBuilder sb = new StringBuilder(src);
for (c = sb.length() - 1; c > 0; c--){
char tc = sb.charAt(c);
if (!Character.isDigit(tc) && inc_left){
sb.insert(c + 1, '1');
return sb.toString();
}
if (Character.isDigit(tc)){
inc_left = false;
if (tc >= '9'){
tc = '0';
inc_left = true;
}
else{
tc++;
}
sb.setCharAt(c, tc);
if (!inc_left){
return sb.toString();
}
}
}
return src;
}