嗨我想增加字符串之间的整数值。 例如,初始字符串是 - m1p1b1 。 下面的代码工作正常,但它有一个问题。 当字符串 m10p10b10 时,结果为 m21p21b21 而非 m11p11b11 。 字符串动态之间的整数长度,所以我不能做任何静态代码。
Pattern digitPattern = Pattern.compile("(\\d)");
Matcher matcher = digitPattern.matcher("m1p1b1");
StringBuffer result = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(result, String.valueOf(Integer.parseInt(matcher.group(1)) + 1));
}
matcher.appendTail(result);
System.out.println(result.toString());
答案 0 :(得分:5)
将\\d
更改为\\d+
以匹配一个或多个数字:
Pattern digitPattern = Pattern.compile("\\d+");
Matcher matcher = digitPattern.matcher("m10p10b10");
StringBuffer result = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(result, String.valueOf(Integer.parseInt(matcher.group(0)) + 1));
}
matcher.appendTail(result);
System.out.println(result.toString()); // => m11p11b11
请参阅IDEONE demo
请注意,您不必使用(...)
捕获整个模式,您可以使用matcher.group(0)
访问该值。