我正在构建一个Android应用程序,我想从收件箱消息中仅提取数值(Rs.875)并将它们全部添加。 我该怎么办,请提出一些想法。
示例:消息将如下所示 - 1 GT;为9055668800再充电Rs.196成功。使用免费充值应用即时为预付费移动电话充值。 2>嗨,我们已收到付款额为2000.00卢比的ref.no.NF789465132。请在确认预订时保持关注。
我只需要计算文字中的金额。
答案 0 :(得分:1)
您可以这样做:您可以使用Regex
之类的"(?<=Rs.)\\d+[\\.\\d]*"
来获取问题中提到的金额。 我只需要计算文字中的金额。
String message = "Recharge of Rs.196 for 9055668800 is successful. Recharge prepaid mobile instantly using freecharge app. hi, we have received payment of Rs.2000.00 with ref.no.NF789465132. Stay tuned while we confirm your booking.";
Pattern pattern = Pattern.compile("(?<=Rs.)\\d+[\\.\\d]*");
Matcher matcher = pattern.matcher(message);
double sum = 0;
while (matcher.find()) {
String digit = matcher.group();
System.out.println("digit = " + digit);
sum += Double.parseDouble(digit);
}
System.out.println("sum = " + sum);
这是出局:
digit = 196
digit = 2000.00
sum = 2196.0
答案 1 :(得分:1)
这里没有正则表达式:
String[] messageParts = message.split(" ");
double sum = 0;
for (String messagePart : messageParts) {
if (messagePart.startsWith("Rs.")) {
sum += Double.parseDouble(messagePart.substring(messagePart.indexOf("Rs.") + 3));
}
}
System.out.println("Sum: " + sum);
输出
总和:2196.0
答案 2 :(得分:-1)
如果您只想从给定的字符串中提取充值金额,那么您可以使用像Rs.[0-9.]+
这样的正则表达式。然后,您可以将其解析为Integer或Double以对其进行总结。
以下是快速代码段:
public static void main (String[] args)
{
String str = "Recharge of Rs.196.00 for 9055668800 is successful.";
Pattern r = Pattern.compile("Rs.[0-9.]+");
Matcher m = r.matcher(str);
double sumTotal = 0;
if (m.find()) {
System.out.println("Amount: " + m.group(0).substring(3));
sumTotal += Double.parseDouble(m.group(0).substring(3));
}
}
输出:
Amount: 196.00