2016-03-03 104 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'變量名。 –