boy*_*od3 2 java pattern-matching
嗨我想增加字符串之间的整数值.例如,初始字符串是 - 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());
Run Code Online (Sandbox Code Playgroud)
更改\\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
Run Code Online (Sandbox Code Playgroud)
请参阅IDEONE演示
请注意,您不必捕获整个模式(...),您可以使用访问该值matcher.group(0).