Ich mache die folgenden Schritte.Extrahieren (parsen) Betrag und Beschreibung von BIZ (Transaktion) SMS
Spiel sms mit regex
wenn enthält angegebene Schlüsselwort dann Werte von sms Körper erhalten wie Menge, Beschreibung (Grund der Transaktion), Kontonummer (wenn Bancomaten), Bewegungsart (Debit-/Kredit)
diese Regex nicht alle Art von Bank/Transaktion sms daher ist es nicht effizient, gibt es eine andere Möglichkeit, Bank Nachricht zu identifizieren.
Beispiel SMS:
1) Sehr geehrter Kunde, Ihre Kontonummer XXXXXX6377 wurde gutgeschrieben von Rs 215.000 ist DBT/DBTL Weisung am 19/05/2015 - ZENTRALBANK INDIEN
2) A/c NN5715 für Rs 2000 belastet; ATM WDL. A/C Bal (sub bis Chq Realisatn) Rs13286.23 am 24APR 21: 19hr. Rufen Sie 1800226999 an, um Ihre Karte zu sperren, wenn sie nicht von Ihnen benutzt wird.
3) Sehr geehrter Kunde, Ihre Ac XXXXXXXX5666 ist gutgeschrieben mit INR8,922.00 am 16. Februar Info. INF * 000080483346 * GEHALT. Ihr verfügbares Bal ist INR 8.922,00.
private static ArrayList<SmsDto> parsevalues(ArrayList<SmsDto> body_val) {
ArrayList<SmsDto> resSms = new ArrayList<>();
for (int i = 0; i < body_val.size(); i++) {
SmsDto smsDto = body_val.get(i);
Pattern regEx
= Pattern.compile("(?:inr|rs)+[\\s]*[0-9+[\\,]*+[0-9]*]+[\\.]*[0-9]+");
// Find instance of pattern matches
Matcher m = regEx.matcher(smsDto.getBody());
if (m.find()) {
try {
Log.e("amount_value= ", "" + m.group(0));
String amount = (m.group(0).replaceAll("inr", ""));
amount = amount.replaceAll("rs", "");
amount = amount.replaceAll("inr", "");
amount = amount.replaceAll(" ", "");
amount = amount.replaceAll(",", "");
smsDto.setAmount(Double.valueOf(amount));
if (smsDto.getBody().contains("debited") ||
smsDto.getBody().contains("purchasing") || smsDto.getBody().contains("purchase") || smsDto.getBody().contains("dr")) {
smsDto.setTransactionType("0");
} else if (smsDto.getBody().contains("credited") || smsDto.getBody().contains("cr")) {
smsDto.setTransactionType("1");
}
smsDto.setParsed("1");
Log.e("matchedValue= ", "" + amount);
if (!Character.isDigit(smsDto.getSenderid().charAt(0)))
resSms.add(smsDto);
} catch (Exception e) {
e.printStackTrace();
}
} else {
Log.e("No_matchedValue ", "No_matchedValue ");
}
}
return resSms;
}
danke für ein swier ist diese Regx Willen gibt Transaktion separate info –
danke, aber ich bekomme nur die erste Ziffer der Menge mit [Ii] [Nn] [Rr] (\\ s *. \\ s * \\ d *) reguler Ausdruck.wie kann ich bekomme alle Ziffern –