首页 > 学院 > 开发设计 > 正文

截取短信类容(银行卡)

2019-11-14 22:11:41
字体:
来源:转载
供稿:网友
截取短信类容(银行卡)
  注释:收集各个银行的储蓄卡的存取操作接收到的短信内容信息;招商银行:95555转入模板您账户1523于11月01日21:23ATM存款人民币8000.00,余额8402.39[招商银行] 支出模板:您账户1523于10月03日21:05直付通/快捷支付扣款人民币99.50,余额1123.59[招商银行] 光大银行:95595收入模板:xx向您尾号6469账户15:24转入8000元,余额为8654.78元,摘要:网银跨行汇款。[光大银行] 支出尾号6469账户11:56支出32.34元,余额88.74元,摘要:网上支付 支付宝 支付宝[光大银行] 工商  : 95588 收入你尾号8888卡12日19:30工商银行收入(这个显示的名字)10元,余额10.00元。【工商银行】支出你尾号8888卡12日19:30POS(或者的ATM)支出(消费(ATM没有这个括号和括号里的内容))10元,余额10.00元。【工商银行】中国银行:95566收入您的个人账户8888于2014-11-03 13:48:43 存入人民币1000.00元,交易后余额5000.00元【中国银行】支出您的个人账户8888于2014-07-31 10:09:50 网银支取人民币8888.00元,交易后余额123.00元【中国银行】 建设银行:95533收入您尾号8199的储蓄卡账户10月26日14时3分ATM存款收入人民币2786.07元,活期余额3443.16元。[建设银行]支出您尾号8199的储蓄卡账户11月5日16时1分ATM取款支出人民币300.00元,活期余额71.16元。[建设银行] 平安银行:95511收入10月30日11时03分,账户*[9002]存RMB485,000.00元成功,现余额561,752.68元【平安银行】支出11月03日09时51分,账户*[9002]取RMB3,700.00元成功,现余额6,749.68元【平安银行】成都银行:96511收入【成都银行】您尾号为2352的卡于10月7日16时57分行内ATM存款人民币1,500元。公交次卡、电卡充值,我行营业点一站搞定支出【成都银行】您尾号为2352的卡于10月17日19时13分活期取款人民币700元。49天理财在售预期年化收益5-5.1%德阳银行:96836收入【德阳银行】您尾号4625账户于10月15日 17:04小额入账人民币2092.82元。余额2094.98元。随心贷助您圆梦之贷支出【德阳银行】您尾号4625账户于10月26日 10:38ATM取款人民币500.00元。余额1157.30元。开个人网银 移动银行UK免费送民生银行:95568支出账户*8844于11月04日08:13支出¥100.00元,可用余额9800.00元。取款:86310138成都市红星中路四段199号蜀源大厦。【民生银行】农业银行:95599支出【四川农行】您好:您的账户6228***1813于20141012现支(分行营业部)-1400.00元,余额498.58元

截取的代码

String pa1="10月30日11时03分,账户*[9002]存RMB485,000.00元成功,现余额561,752.68元【平安银行】";  String pa2="11月03日09时51分,账户*[9002]取RMB3,700.00元成功,现余额6,749.68元【平安银行】";  String pa3="【成都银行】您尾号为2352的卡于10月7日16时57分行内ATM存款人民币1,500元。公交次卡、电卡充值,我行营业点一站搞定";  String pa4="【成都银行】您尾号为2352的卡于10月17日19时13分活期取款人民币700元。49天理财在售预期年化收益5-5.1%";    parseMsg(pa1);  parseMsg(pa2);  parseMsg(pa3);  parseMsg(pa4);PRivate static void parseMsg(String str){        Map<String,String>da=new HashMap<String,String>();        String [] back={"招商银行","光大银行","工商银行","中国银行","建设银行","平安银行",                "成都银行","德阳银行","民生银行","四川农行" };        for (String string : back) {            if(str.contains(string))                da.put("银行", string);        }        String mh=":";        String mh1=":";        String dian=".";        String duanxian="-";        String space="";        String z_douhao=",";        String e_douhao=",";        String xing="*";                int yyc=0;        int wyc=0;        boolean preIsNumber=false;//上一个东西是否是数字        Map<String,String>map=new HashMap<String,String>();        String num="";        String ss="";        char[] c = str.toCharArray();        JSONObject j=new JSONObject();        for(int i=0;i<str.length();i++){            String getc=(c[i]+"").trim();             if(getc.equals(",")||getc.equals("。"))                 {                         if(ss.equals("元")){                          ss=ss.substring(0, ss.lastIndexOf("元"));                     }                     continue;                                  }            try{                Integer nn=Integer.parseInt(c[i]+"");                wyc++;//无异常++                preIsNumber=true;                num+=nn;                             }catch (Exception e) {                if(getc.equals(mh)||getc.equals(dian)){                        if(preIsNumber){//上一个东西是数字,加在数字后面                            num+=c[i];//中文加上冒号                        }else{                            //上一个东西是不数字,加在字符串后面                            ss+=c[i];                        }                    continue;                }                if(getc.equals(mh1)||getc.equals(dian)){                    if(preIsNumber){//上一个东西是数字,加在数字后面                        num+=c[i];//中文加上冒号                    }else{                        //上一个东西是不数字,加在字符串后面                        ss+=c[i];                    }                    continue;                }                if(getc.equals(duanxian)||getc.equals(dian)){                    num+=c[i];//短线                    continue;                }                if(getc.equals(space)||getc.equals(dian)){                    num+=c[i];//空字符串                    continue;                }                if(getc.equals(z_douhao)||getc.equals(dian)){                    num+=c[i];//中文逗号                    continue;                }                if(getc.equals(e_douhao)||getc.equals(dian)){                    num+=c[i];//英文逗号                    continue;                }                if(getc.equals(xing)||getc.equals(dian)){                    num+=c[i];//星号*                    continue;                }                if(wyc>0){                    j.put(ss.trim(), num.trim());                    map.put(ss.trim(), num.trim()+"");                    yyc=0;                    wyc=0;                    ss="";                    num="";                }                yyc++;//有异常++                 ss+=c[i];            }        }         Iterator keys = j.keys();         boolean haszhanghao=false;          int size = j.size();          for(int jsonNum=0;jsonNum<size;jsonNum++){                                while (keys.hasNext()) {                         String k=keys.next().toString();                         if(!haszhanghao){                             if(k.contains("账户")||k.contains("尾号")){                                 {                                     String string = j.getString(k);//取得账户的数字                                     da.put("尾号",getNum(string));                                     haszhanghao=true;                                 }                             }                         }                         ///                        //存|存款|转入|转|收入|收|存入|入账";                          if(k.contains("存")||k.contains("存款")||k.contains("转入")||k.contains("转")||                                  k.contains("收入")||k.contains("收")||k.contains("存")||k.contains("入账")||k.contains("存入")){                              {                                  String string = j.getString(k);//取得账户的数字                                  String value=string.toCharArray()[0]+"";                                  if(string.contains("-")&&Pattern.compile("[0-9]*").matcher(value).matches()){                                      continue;                                  }                                  if(value.contains("+")){                                      da.put("收入", string.substring(1, string.length()));                                  } else{                                      da.put("收入",string);                                  }                                      da.put("type", "收入");                              }                          }                          ///                        //"快捷支付扣款|快捷支付|支付|支出|扣|扣款|支取|取款|取出|取|现支"                          if(k.contains("快捷支付扣款")||k.contains("快捷支付")||k.contains("支付")||k.contains("支出")||k.contains("扣")||k.contains("扣款")||                                  k.contains("支取")||k.contains("取款")||k.contains("取出")||k.contains("取")||k.contains("现支")){                              {                                  String string = j.getString(k);                                   String value=string.toCharArray()[0]+"";                                  if(string.contains("-")&&Pattern.compile("[0-9]*").matcher(value).matches()){                                      continue;                                  }                                  if(value.contains("-")){                                      da.put("支出", string.substring(1, string.length()));                                  }else{                                      da.put("支出",string);                                  }                                  da.put("type", "支出");                              }                          }                           ///                        //"余额|余";                          if(k.contains("余")||k.contains("余额")){                              {                                  String string = j.getString(k);                                   String value=string.toCharArray()[0]+"";                                  if(string.contains("-")&&Pattern.compile("[0-9]*").matcher(value).matches()){                                      continue;                                  }                                  //英文逗号                                  if(value.equals(",")){                                      da.put("余额", string.substring(1, string.length()));                                  }                                 //中文逗号                                  else if(value.contains(",")){                                      da.put("余额", string.substring(1, string.length()));                                  }else{                                      da.put("余额",string);                                  }                              }                          }                     }            }         System.out.println("----------结果-------");         System.out.println(da.toString());    }    //是否是尾号,账号。假如有**号,借入最后面的4位 至少都是4位    private static String getNum(String str){        try{            if(str.length()<4){                return "";            }else            {             Pattern pattern = Pattern.compile("[0-9]*");             if(pattern.matcher(str).matches()){                 //刚好是4位                 return str;             }else{                 return str.substring(str.length()-4, str.length());             }            }        }catch (Exception e) {            return "";        }    }

结果:

----------结果-------{收入=485,000.00, 余额=561,752.68, 银行=平安银行, type=收入, 尾号=9002}----------结果-------{支出=3,700.00, 余额=6,749.68, 银行=平安银行, type=支出, 尾号=9002}----------结果-------{收入=1,500, 银行=成都银行, type=收入, 尾号=2352}----------结果-------{支出=700, 银行=成都银行, type=支出, 尾号=2352}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表