Увеличение значения цифры в строке - PullRequest
4 голосов
/ 21 сентября 2009

Итак, у меня есть строка с цифрами и другими символами, и я хочу увеличить значение каждой цифры на 1. Например: «test1check2» из этой строки я хочу получить «test2check3». И я могу сделать это только с методом «replaceAll»? (i.replaceAll ("\ d", ...) что-то подобное) ?, без использования таких методов, как indexOf, charAt ...

Ответы [ 2 ]

9 голосов
/ 21 сентября 2009

Я не думаю, что вы можете сделать это с помощью простой 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 класса.

0 голосов
/ 21 сентября 2009

Я бы хотел сделать что-то подобное

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()); 
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...