Умножьте целые числа внутри строки на отдельное значение с помощью регулярных выражений

В настоящее время у меня есть код ниже, и он успешно возвращает все числа, которые присутствуют в строке, которую я имею.

Примером строки будет сказать: 1 яйцо, 2 ломтика бекона, 3 картофеля.

    Pattern intsOnly = Pattern.compile("\\d+");
    Matcher matcher = intsOnly.matcher(o1.getIngredients());
    while (matcher.find()) {
        Toast.makeText(this, "" + matcher.group(), Toast.LENGTH_LONG).show();
    }

Однако я хотел бы умножить эти числа, скажем, на четыре, а затем поместить их обратно в исходную строку. Как мне этого добиться?

Заранее спасибо!

2 ответа

Делать арифметику немного сложнее, чем делать find()

Pattern intsOnly = Pattern.compile("\\d+");
Matcher matcher = intsOnly.matcher(test);
int start = 0;
int end = 0;
StringBuffer resultString = new StringBuffer();
while (matcher.find()) {
    start = matcher.start();
    // Copy the string from the previous end to the start of this match
    resultString.append(test.substring(end, start));
    // Append the desired new value
    resultString.append(4 * Integer.parseInt(matcher.group()));
    end = matcher.end();
}
// Copy the string from the last match to the end of the string
resultString.append(test.substring(end));

Этот StringBuffer будет содержать ожидаемый вами результат.

Я никогда не пробовал это, но я думаю, что appendReplacement должно решить вашу проблему

Другие вопросы по тегам