乘整数内部的字符串通过一个单独的值使用正则表达式(Multiply Integers Inside

2019-10-30 06:13发布

目前,我有下面的代码并成功返回所有存在于一个字符串我有编号。

字符串的一个例子是说:鸡蛋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();
    }

然而,我谨说,四名相乘这些数字,然后将它们放回原来的字符串。 我怎样才能做到这一点?

提前致谢!

Answer 1:

我从来没有尝试过这一点,但我觉得appendReplacement应该解决您的问题



Answer 2:

做算术有点复杂,而这样做的发现()

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的将持有您所期待的结果。



文章来源: Multiply Integers Inside A String By An Individual Value Using Regex