2016-03-03 106 views
2

嗨,我想增加字符串之间的整数值。例如 初始字符串是 - 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

将'(\\ d)'更改​​为'(\\ d +)' –

回答

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)

+0

如何处理m.group(0)方法? – boycod3

+1

看我的代码演示:)我用'matcher.group(0)'替换'matcher.group(1)'。我通常使用'm'作为'Matcher'变量名。 –