如何从字符串中获取最后一个整数"56",如ra12ke43sh56?
我必须将下一个值修改为ra12ke43sh57,所以我想得到最后一个整数值.
Boz*_*zho 23
StringBuilder sb = new StringBuilder();
for (int i = str.length() - 1; i >= 0; i --) {
char c = str.charAt(i);
if (Character.isDigit(c)) {
sb.insert(0, c);
} else {
break;
}
}
String result = sb.toString();
Run Code Online (Sandbox Code Playgroud)
要么
Pattern p = Pattern.compile("[0-9]+$");
Matcher m = p.matcher(str);
if(m.find()) {
result = m.group();
}
Run Code Online (Sandbox Code Playgroud)
然后 Integer.parseInt(result)
也许您想要这样的东西(另请参阅 ideone.com):
static String nextId(String id) {
String[] parts = id.split("(?=\\d+$)", 2);
final int L = parts[1].length();
final int num = Integer.parseInt(parts[1]) + 1;
return parts[0] + String.format("%0"+L+"d", num);
}
public static void main(String[] args) {
String[] tests = {
"jamesBond007", "ra12ke43sh57", "-42", "x888y999", "00000"
};
for (String test : tests) {
System.out.println(nextId(test));
}
// prints "jamesBond008", "ra12ke43sh58", "-43", "x888y1000", "00001"
}
Run Code Online (Sandbox Code Playgroud)
这里有几件事在起作用:
String.split(String regex, int limit), 仅限 2 部分
parts[0]是静态前缀,可能为空parts[1]是字符串末尾的数字序列(?=\d+$)匹配一个可以匹配的位置\d+$
\d字符类+$String.format保留任何前导零
%05d意味着:
0:用前导零填充5:宽度为5d:十进制整数转换关于环视: