增加String中的数字值

时间:2009-09-21 08:10:34

标签: java regex

所以,我有一些带有数字的字符串和另一个符号,我希望将每个数字的值增加到1.例如:来自此字符串的“test1check2”我希望收到“test2check3”。我可以用方法“replaceAll”来制作吗? (i.replaceAll(“\ d”,...)类似的东西)?,不使用像indexOf,charAt等方法......

2 个答案:

答案 0 :(得分:9)

我认为你不能用简单的replaceAll(...)来做,你必须写几行:

Pattern digitPattern = Pattern.compile("(\\d)"); // EDIT: Increment each digit.

Matcher matcher = digitPattern.matcher("test1check2");
StringBuffer result = new StringBuffer();
while (matcher.find())
{
    matcher.appendReplacement(result, String.valueOf(Integer.parseInt(matcher.group(1)) + 1));
}
matcher.appendTail(result);
return result.toString();

这里可能存在一些语法错误,但它会起作用。

编辑:您评论说每个数字必须单独递增(abc12d - > abc23d),因此模式应该从(\\ d +)更改为(\\ d)

编辑2 :根据StringBuilder课程的要求,将StringBuffer更改为Matcher

答案 1 :(得分:0)

我倾向于做这样的事情

string testString = new string("test{0}check{1}");
for (int testCount = 0; testCount < 10; testCount++)
{
   for (int checkCount = 0; checkCount < 10; checkCount++)
   {
   console.WriteLine(string.FormatString(testString, testCount, checkCount)); 
   }
}

我知道现在已经回答了这个问题,但是为了解决这些问题,用Java可以做到这一点:

for (int testCount = 0; testCount < 10; testCount++)
{
   for (int checkCount = 0; checkCount < 10; checkCount++)
   {
      String s = String.format("test%scheck%s", testCount.ToString(), checkCount.ToString()); 
   }
}