增加字符串内的数字

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)

Wik*_*żew 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
Run Code Online (Sandbox Code Playgroud)

请参阅IDEONE演示

请注意,您不必捕获整个模式(...),您可以使用访问该值matcher.group(0).