正在写一套短信群发的系统
遇到一个棘手的问题,请教大家了
方法的需求大致是这样的:
传入一组(可能是上百个)半角逗号隔开的手机号,要求把手机号按照运营商进行分类,再把手机号分别存到3个表的Nuber字段中.
还有个限制就是,那个Nuber字段每次只能存2个号码.
比如入传入参数是(1118,3332,1114,1115,2224,2225,3336,2226,2228,3339,1119,1110) ,
这里的111,222,333只是便于辨认,并不是说就是这样的号码,因此可能不能用正则表达式进行拆分.
经过处理,我要存到数据库的内容是这样的
表1
ID | Nuber |
1 | 1118,1114 |
2 | 1115,1119 |
3 | 1110 |
表2
ID | Number |
1 | 2224,2225 |
2 | 2226,2228 |
表3
ID | Number |
1 | 3332,3336 |
2 | 3339 |
关于手机号码处理的这部分,希望有人能帮助一下小弟,下面贴出部分代码,大家帮忙参考一下(超出2个号码的处理,还没做).
/** * 检测参数中手机号(或手机号列表)的合法性. * 参数mobiList为空,则返回空; * * @param mobiList * :发送对象手机号(或手机号列表,用半角逗号分隔) * @return mobiLists */ @SuppressWarnings({ "rawtypes", "unchecked" }) public static List CheckMobi(String mobiList) { // 如果参数中没有号码,则返回空 if (("".equals(mobiList)) || (null == mobiList)) { return null; } // 手机号码用半角逗号分开 String[] tmpArr = mobiList.split(","); // 处理后的手机号列表 List mobiLists = new ArrayList(); // 移动手机号 StringBuffer mobi_m = new StringBuffer(); // 联通手机号 StringBuffer mobi_u = new StringBuffer(); // 电信手机号 StringBuffer mobi_t = new StringBuffer(); // 进行分析处理 for (int i = 0; i < tmpArr.length; i++) { // 获取此号码号段信息 smsPrefix = CheckPrefixExist(tmpArr[i].substring(0, 3)); // 如果号段信息不存在,则返回空 if ("".equals(smsPrefix) || null == smsPrefix) { return null; } // 将不同运营商的号码放入不同分组 switch(Integer.parseInt(smsPrefix.getStatus())) { case 0: mobi_m.append(tmpArr[i]).append(","); break; case 1: mobi_m.append(tmpArr[i]).append(","); break; case 2: mobi_m.append(tmpArr[i]).append(","); break; } } mobiLists.add(mobi_m); mobiLists.add(mobi_u); mobiLists.add(mobi_t); return mobiLists; }