代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
JS
】
通过正则表达式截取短信中流量信息
作者:
akang
/ 发布于
2015/10/19
/
926
public class MobileNoValidate { static String msg = "【回复8有惊喜】您的当前帐户余额146.28元,其中基本帐户余额144.44元,赠送帐户余额1.84元;当月手机流量共300.00M,已使用156.06M,剩余143.94M(含国内2/3/4G流量100.00M;省内2/3/4G流量43.94M);当月免费短信普通国内短信套餐剩余100条;月结日为15日,以上仅供参考;【查询及办理】回以下序号:" + "1. 剩余流量及套餐情况查询" + "2. 4G套餐办理" + "3. 流量月套餐办理" + "4. 流量保障服务(安心计划)" + "5. 流量叠加包办理" + "6. 短号家庭网及集群网办理" + "7. 上网功能恢复" + "8. 最新优惠" + "点击 gd.10086.cn/8611 下载APP充值95折。中国移动"; static String totalMsg = "当月手机流量共(.*?)M"; static String usedMsg ="已使用(.*?)M"; static String surplusMsg ="剩余(.*?)M"; public static void main(String[] args) { // String total = getTotal(msg,totalMsg); // String used =getUsed(msg,usedMsg); // String surplus = getSurplus(msg,surplusMsg); // String date = getDate(msg); // System.out.println("total is ->"+total+";and isNumber ->"+isNumber(total)); // System.out.println("used is ->"+used+";and isNumber ->"+isNumber(used)); // System.out.println("surplus is ->"+surplus+";and isNumber ->"+isNumber(surplus)); // System.out.println(date); msg = msg.replace(",", ","); Map<String,String> res = validateUserDataMsg(msg.replace("/n", "").replace(" ", "")); System.out.println(JSONObject.toJSONString(res)); } public static Map<String,String> validateUserDataMsg(String msg) { Map<String,String> result = new HashMap<String,String>(); ImergencyDataMsgFlowDTO flow = new ImergencyDataMsgFlowDTO(); // for(ImergencyMsgRuleDTO dto:list){ String totalData = getTotal(msg, totalMsg); String usedData = getUsed(msg, usedMsg); String surplusData = getSurplus(msg, surplusMsg); if(isNumber(totalData)){ flow.setTotalData(totalData); if(isNumber(usedData)){ flow.setUsedData(usedData); } if(isNumber(surplusData)){ flow.setSurplusData(surplusData); } }else{ if(isNumber(usedData)&&isNumber(surplusData)){ flow.setUsedData(usedData); flow.setSurplusData(surplusData); } } /** * 封装flow的流量信息 必须 套餐总流量、当前使用流量、剩余流量都不为空或者null */ java.text.DecimalFormat df =new java.text.DecimalFormat("#.00"); if(com.paic.wifi.util.StringUtil.isEmpty(flow.getTotalData())&&com.paic.wifi.util.StringUtil.isNotEmpty(flow.getUsedData())&& com.paic.wifi.util.StringUtil.isNotEmpty(flow.getSurplusData())){ Double total = Double.parseDouble(flow.getUsedData())+Double.parseDouble(flow.getSurplusData()); flow.setTotalData(df.format(total)); } if(com.paic.wifi.util.StringUtil.isEmpty(flow.getUsedData())&&com.paic.wifi.util.StringUtil.isNotEmpty(flow.getTotalData())&& com.paic.wifi.util.StringUtil.isNotEmpty(flow.getSurplusData())){ Double used = Double.parseDouble(flow.getTotalData())-Double.parseDouble(flow.getSurplusData()); flow.setUsedData(df.format(used)); } if(com.paic.wifi.util.StringUtil.isEmpty(flow.getSurplusData())&& com.paic.wifi.util.StringUtil.isNotEmpty(flow.getTotalData())&& com.paic.wifi.util.StringUtil.isNotEmpty(flow.getUsedData())){ Double surplus = Double.parseDouble(flow.getTotalData())-Double.parseDouble(flow.getUsedData()); flow.setSurplusData(df.format(surplus)); } /** * 流量数据入db库和redis库 */ try{ String json = JSONObject.toJSONString(flow); System.out.println("validate msg flow json is ->"+json); if(com.paic.wifi.util.StringUtil.isNotEmpty(flow.getTotalData())&& com.paic.wifi.util.StringUtil.isNotEmpty(flow.getUsedData())&& com.paic.wifi.util.StringUtil.isNotEmpty(flow.getSurplusData())){ result.put("code", "200"); //为配置该套餐的短信校验规则 return result; }else{ result.put("code", "302"); // 短信校验失败 return result; } }catch(Exception e){ result.put("code", "600"); return result; } } /** * 获取短信日期 * @param str * @return */ public static String getDate(String str) { Pattern p = Pattern.compile("截至(.*?)日"); Matcher m = p.matcher(str); Calendar c = Calendar.getInstance(); while (m.find()) { String day = m.group(1); c.set(Calendar.DAY_OF_MONTH, Integer.parseInt(day)); } p = Pattern.compile("日(.*?)时"); m = p.matcher(str); while(m.find()){ String hour = m.group(1); c.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hour)); } p = Pattern.compile("时(.*?)分"); m = p.matcher(str); while(m.find()){ String minute = m.group(1); c.set(Calendar.MINUTE, Integer.parseInt(minute)); } return DateUtil.fmtDateToYMDHM(c.getTime()); } /** * 获取总流量 * @param str * @return */ public static String getTotal(String str,String validateMsg) { String[] array = validateMsg.split("_"); String validate = array[0]; String groupCount = null; if(array.length>1){ groupCount = array[1]; } String isAdd = null; if(array.length>2){ isAdd = array[2]; } int count = 1; if(StringUtils.isNotEmpty(groupCount)){ count = Integer.parseInt(groupCount); } boolean add = false; if(StringUtils.isNotEmpty(isAdd)&&"1".equals(isAdd)){ add =true; } Pattern p =Pattern.compile(validate); Matcher m = p.matcher(str); String result = null; if(add){ Integer data = 0; while (m.find()) { data = data + (Integer.parseInt(m.group(1))); } if(data>0){ result = data.toString(); } }else{ while (m.find()) { result = m.group(count); } } return result; } /** * 获取已经使用的流量 * @param str * @return */ public static String getUsed(String str,String validateMsg) { String[] array = validateMsg.split("_"); String validate = array[0]; String groupCount = null; if(array.length>1){ groupCount = array[1]; } String isAdd = null; if(array.length>2){ isAdd = array[2]; } int count = 1; if(StringUtils.isNotEmpty(groupCount)){ count = Integer.parseInt(groupCount); } boolean add = false; if(StringUtils.isNotEmpty(isAdd)&&"1".equals(isAdd)){ add =true; } Pattern p =Pattern.compile(validate); Matcher m = p.matcher(str); String result = null; if(add){ java.text.DecimalFormat df =new java.text.DecimalFormat("#.00"); Double data = 0.00; while (m.find()) { data = data + (Double.parseDouble(m.group(count))); } if(data>0){ result = df.format(data); } }else{ while (m.find()) { result = m.group(count); } } return result; } /** * 获取剩余流量 * @param str * @return */ public static String getSurplus(String str,String validateMsg) { String[] array = validateMsg.split("_"); String validate = array[0]; String groupCount = null; if(array.length>1){ groupCount = array[1]; } String isAdd = null; if(array.length>2){ isAdd = array[2]; } int count = 1; if(StringUtils.isNotEmpty(groupCount)){ count = Integer.parseInt(groupCount); } boolean add = false; if(StringUtils.isNotEmpty(isAdd)&&"1".equals(isAdd)){ add =true; } Pattern p =Pattern.compile(validate); Matcher m = p.matcher(str); String result = null; if(add){ java.text.DecimalFormat df =new java.text.DecimalFormat("#.00"); Double data = 0.00; while (m.find()) { data = data + (Double.parseDouble(m.group(count))); } if(data>0){ result = df.format(data); } }else{ while (m.find()) { result = m.group(count); } } return result; } private static boolean matcher(String reg, String string) { boolean tem = false; Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern.matcher(string); tem = matcher.matches(); return tem; } /** * 判断一串字符串是否为数字 * @param value * @return */ public static boolean isNumber(String value){ if(com.paic.wifi.util.StringUtil.isEmpty(value)){ return false; } String reg = "^(\\+)?\\d+(\\.\\d+)?$"; return matcher(reg, value); }
试试其它关键字
流量信息
短信
正则表达式
同语言下
.
Jquery搜索框获取回车事件
.
H5页面添加倒计时,然后自动跳转
.
通过user-agent判断h5页面是在哪个手机App(QQ、微信
.
nginx 禁止未绑定的域名访问
.
JavaScript 获取按键,并屏蔽系统 Window 事件
.
H5之只允许微信浏览器打开,禁止从外部浏览器访问
.
微信打开网址添加在浏览器中打开提示的办法
.
实现JS复制、粘贴,Chrome/Firefox下可用
.
video视频播放,play()、pause()、duration时长、onen
.
HTML5实现MP3上传前的预览和播放时长的获取
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
akang
贡献的其它代码
(
20
)
.
base64加解密
.
发邮件,密送多人,带附件,中文正文,收信信箱从exce
.
VBS脚本发送邮件,密送多人,带附件,可更换账号密码
.
石头, 剪刀, 布
.
通过正则表达式截取短信中流量信息
.
发送邮件,可带附件,可群发
.
二叉树的常用算法
.
复数类
.
向数据库添加数据
.
字符串转为十六进制
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3