增加字符串内的数字

时间:2016-03-03 09:49:24

标签: 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());

1 个答案:

答案 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)访问该值。