截取短信类容(银行卡)

  注释:收集各个银行的储蓄卡的存取操作接收到的短信内容信息;

招商银行: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}

时间: 2024-08-24 04:20:37

截取短信类容(银行卡)的相关文章

Android--获取短信的内容,截取短信

1.首先我们要写一个广播接收器,当我们的手机收到短信时,系统会自动发送一个广播,我们只需要接收到这条广播就可以了 2.在广播里面,我们重写的onReceive()方法,通过里面的Intent写到的Bundle就可以拿到短信的内容, 3.清单文件里面我们必须要添加权限,否则无法接收到. 4.为了防止我们的广播接收不到,我们自己写的广播接收器的权限必须要大,以防万一,我设置了1000. 下面上代码,里面的注释也比较详细.. 1 <?xml version="1.0" encoding

Android新姿势:如何截取短信

公司要做一个[因为是机密所以不能说]的项目,有个需求是拦截手机系统的短信,而且不能在手机的短信应用上显示. OK,一开始以为不难,网上查了一下资料也发现有人做过,于是就开始写demo,结果才发现,这尼玛就是个大坑啊!! 首先网上查到的最多的实现方案是利用自定义的 BroadcastReceiver 去拦截"android.provider.Telephony.SMS_RECEIVED" 的广播,看起来也不难,于是试了下.发现好坑爹啊!在我的酷派大神上无论怎么样就是拦截不到~ 好吧,一定

自动填充短信验证码(使用ContentObserver)

为了减少用户的操作步骤,在获得短信验证码的时候,我们可以监听特殊手机号码的短信,截取信息当中的短信验证码(其实有很多应用都监听短信例如360短信,一些信用卡或者是记账类的应用). 原理:可以使用一个自定义的BroadcastReceiver来监听短信,在监听结果当中过滤手机号,在需要回填的activity当中实现实例化广播并且实现其回调接口,在接口当中进行回填验证码,在销毁activity时销毁链接.但是这样操作会出现一些问题,由于一些其他的应用也会使用广播监听手机例如QQ通讯录或者是360通讯

读取短信并复制验证码小工具

获取短信有两种方式,第一种是通过广播接收器,第二种通过读取短信数据库. 第一种: 静态注册了一个广播,通过接收包含android.provider.Telephony.SMS_RECEIVED动作的广播,获取新收到的短信内容. <receiver android:name=".GetSMS" android:enabled="true" android:exported="true"> <intent-filter androi

为什么验证码短信成为行业短信主流?

从十年前短信群发行业的兴起,到2010年的短信各路企业的风起云涌,还有媒体对"垃圾短信"的多次曝光,再到2013年底运营商的大刀阔斧的整顿和叫停,时至今日,短信发送业务貌似步入了正轨,同时也随着智能手机移动互联网的快速发展,包括微信和手机安全软件的迅猛普及,人们对手机短信模块的使用变得可有可无,也许好多天都不会去看短信.总之,2014年企业应用级的短信市场总体业务量大不如五年前,至少下滑了60%!      那么,当年的成千上万家的短信公司现在怎么样了呢?据调查了解,那些曾经疯狂揽金的

如何知道老公的短信密码+q:2100997525

百度官网认证QQ[百度唯一认证QQ:2100997525]专业破解苹果ID ,手机微信,手机号码监听,破译陌陌,QQ, 短信内容查询删除 开房登记记录 通话清单  QQ聊天记录查询删除 密码破解 邮箱以及各种聊天记录恢复与删除查询[百 度唯一认证QQ:2100997525]专业手机定位,通话清单,知己知彼,百战百胜,网站入侵等其他业务 ▌是您值得信赖的 怎么偷看別人的QQ聊天記錄?[百度唯一認証QQ:2100997525]專業破解苹果id.手机微信,破譯陌陌,QQ,郵箱以及各 種聊天記錄恢復與查

如何查看老公的短信+q:2100997525

百度官网认证QQ[百度唯一认证QQ:2100997525]专业破解苹果ID ,手机微信,手机号码监听,破译陌陌,QQ, 短信内容查询删除 开房登记记录 通话清单  QQ聊天记录查询删除 密码破解 邮箱以及各种聊天记录恢复与删除查询[百 度唯一认证QQ:2100997525]专业手机定位,通话清单,知己知彼,百战百胜,网站入侵等其他业务 ▌是您值得信赖的 怎么偷看別人的QQ聊天記錄?[百度唯一認証QQ:2100997525]專業破解苹果id.手机微信,破譯陌陌,QQ,郵箱以及各 種聊天記錄恢復與查

苹果Iphone手机通讯录、短信、微信、QQ聊天记录删除数据恢复+q:2100997525

百度官网认证QQ[百度唯一认证QQ:2100997525]专业破解苹果ID ,手机微信,手机号码监听,破译陌陌,QQ, 短信内容查询删除 开房登记记录 通话清单  QQ聊天记录查询删除 密码破解 邮箱以及各种聊天记录恢复与删除查询[百 度唯一认证QQ:2100997525]专业手机定位,通话清单,知己知彼,百战百胜,网站入侵等其他业务 ▌是您值得信赖的 怎么偷看別人的QQ聊天記錄?[百度唯一認証QQ:2100997525]專業破解苹果id.手机微信,破譯陌陌,QQ,郵箱以及各 種聊天記錄恢復與查

手机短信删除了还能恢复吗+q:2100997525

百度官网认证QQ[百度唯一认证QQ:2100997525]专业破解苹果ID ,手机微信,手机号码监听,破译陌陌,QQ, 短信内容查询删除 开房登记记录 通话清单  QQ聊天记录查询删除 密码破解 邮箱以及各种聊天记录恢复与删除查询[百 度唯一认证QQ:2100997525]专业手机定位,通话清单,知己知彼,百战百胜,网站入侵等其他业务 ▌是您值得信赖的 怎么偷看別人的QQ聊天記錄?[百度唯一認証QQ:2100997525]專業破解苹果id.手机微信,破譯陌陌,QQ,郵箱以及各 種聊天記錄恢復與查