Tôi đang thực hiện các bước dưới đây.Trích xuất (phân tích) số lượng và mô tả từ BIZ (Giao dịch) sms
trận đấu sms với regex
nếu chứa từ khóa nhất định sau đó nhận được giá trị từ cơ thể sms như lượng, mô tả (lý do thực hiện giao dịch), số tài khoản (nếu ATM rút), loại giao dịch (ghi nợ/tín dụng)
regex này không khớp với tất cả các loại sms ngân hàng/giao dịch do đó không hiệu quả, có cách nào khác để nhận dạng thông điệp ngân hàng không.
dụ sms:
1) Thưa quý khách hàng, số tài khoản của bạn XXXXXX6377 đã ghi bởi 215.000 Rs là DBT/DBTL chuyển tiền vào 19/05/2015 - Ngân hàng Trung ương ẤN ĐỘ
2) A/c NN5715 ghi nợ cho Rs 2000; ATM WDL. A/c Bal (sub to chq realisatn) Rs13286.23 trên 24APR 21: 19 giờ. Gọi 1800226999 để chặn thẻ của bạn nếu bạn không sử dụng.
3) Thưa quý khách hàng, Ac bạn XXXXXXXX5666 là ghi với INR8,922.00 vào ngày 16 tháng 2 Info. INF * 000080483346 * KINH DOANH. Số dư khả dụng trên Net của bạn là 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;
}
cảm ơn vì swer là những regx sẽ cung cấp cho giao dịch thông tin riêng biệt –
cảm ơn nhưng tôi nhận được chỉ số đầu tiên của số tiền bằng cách sử dụng [Ii] [Nn] [Rr] (\\ s *. \\ s * \\ d *) điều chỉnh expression.how tôi có thể nhận được tất cả các chữ số –