注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 可扩展、高可用、负载均衡..
 帮助

怎样判断手机号码是移动的还是联通的?


2007-06-23 19:16:41
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://sunny.blog.51cto.com/182601/31445
今天遇到了一个问题,给一个手机号码,怎样判断它是移动的还是联通的。我自己查了一些资料,咨询了一些朋友。不知道是否全面,想和大家研究一下。当然我指的是业务逻辑是否正确,并不是程序本身。用java实现的:
 
 
/** 
     * 判断号码是联通,移动,电信中的哪个,
     * 在使用本方法前,请先验证号码的合法性 规则:前三位为130-133 联通 ;前三位为135-139或前四位为1340-1348 移动; 其它的应该为电信
     * @param mobile要判断的号码
     * @return 返回相应类型:1代表联通;2代表移动;3代表电信
     */
    public static String getMobileType(String mobile) {
     if(mobile.startsWith("0") || mobile.startsWith("+860")){
      mobile = mobile.substring(mobile.indexOf("0") + 1, mobile.length());
     }
     List chinaUnicom  = Arrays.asList(new String[] {"130","131","132","133"}) ;
     List chinaMobile1 = Arrays.asList(new String[] {"135","136","137","138","139","158","159"}) ;
     List chinaMobile2 = Arrays.asList(new String[] {"1340","1341","1342","1343","1344","1345","1346","1347","1348"}) ;
        boolean bolChinaUnicom  = (chinaUnicom.contains(mobile.substring(0,3))) ;
        boolean bolChinaMobile1 = (chinaMobile1.contains(mobile.substring(0,3))) ;
        boolean bolChinaMobile2 = (chinaMobile2.contains(mobile.substring(0,4))) ;
        if (bolChinaUnicom)
            return "1"  ;//联通
        if ( bolChinaMobile1 || bolChinaMobile2 )
            return "2" ; //移动
        return "3" ; //其他为电信
    }

本文出自 “我的博客开张了” 博客,请务必保留此出处http://sunny.blog.51cto.com/182601/31445





    文章评论
 
2007-06-23 22:26:25
哈哈,3代表电信 怎么没有定义呢?是不是除了联通和移动外都是电信呢?我觉的应该再定义一个函数,那就是只要是8位数字,或者是七位数字加上区号,就应该是电信。。不知道正确否?

2007-07-31 17:05:08
哥哥,我也叫sunny耶!!(缘分啊)
看了你的博客,俩字:力挺啊!!
有空也来我的博客坐坐,地址是:http://hexun.com/sunny19/default.html

2008-03-09 18:12:39
我还是不明白啊,兄弟们。


有人说1340——1348是有钱人或有权人早办的啊!


现在怎么区分?

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: