如何从字符串

时间:2016-02-27 07:57:11

标签: java android

我正在构建一个Android应用程序,我想从收件箱消息中仅提取数值(Rs.875)并将它们全部添加。 我该怎么办,请提出一些想法。

示例:消息将如下所示 - 1 GT;为9055668800再充电Rs.196成功。使用免费充值应用即时为预付费移动电话充值。 2>嗨,我们已收到付款额为2000.00卢比的ref.no.NF789465132。请在确认预订时保持关注。

我只需要计算文字中的金额。

3 个答案:

答案 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