我目前有以下代码,它成功返回我所拥有的字符串中的所有数字。
字符串的一个例子是: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();
}
但是,我想将这些数字乘以4,然后将它们放回原始字符串中。我怎样才能做到这一点?
提前致谢!
答案 0 :(得分:0)
我从来没有尝试过这个,但我认为appendReplacement应该可以解决你的问题
答案 1 :(得分:0)
在执行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将保存您期望的结果。