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