【JAVA案例】判断电话号码运营商

博主:👍不许代码码上红
欢迎:🐋点赞、收藏、关注、评论。
格言: 大鹏一日同风起,扶摇直上九万里。

问题提出:如何判断电话号码属于哪个运营商?

可以根据手机号码前3位来快速判断一个手机号码所属的运营商。

我国手机号码有11位数,前3位是网络识别号(运营商号码段)、4-7位是地区编码(HLR归属位置寄存器)、8-11位是用户号码(随机分配),因此我们可以根据手号码前3位来快速判断手机号码运营商。

目前我国三大电信运营商号码段分别如下:

中国电信:133,153,177,180,181,189;

中国联通:130,131,132,155,156,185,186,145,176;

中国电信:134,135,136,137,138,139,147,150,151,152,157,158,159,178,182,183,184,187,188。

一、代码设计思路

trim()函数
功能:trim() 方法用于删除字符串的头尾空白符。

startsWith()函数
功能:startsWith() 方法用于检测字符串是否以指定的前缀开始。

substring() 函数
功能:substring() 方法返回字符串的子字符串。

1.1 定义四个字符串

	private static String CMCC = "移动";		//移动
	private static String UNICOM = "联通";	//联通
	private static String TELECOM = "电信";	//电信
	private static String UNKNWON = "未知";	//未知

1.2 判断号码长度是否合法

if (phoneNum == null || phoneNum.length() < 11) {
			return UNKNWON;


if (phoneNum.length() != 11) {
			return UNKNWON;
		}

1.3 根据前三个字符判断返回相对应的值

if (head3.equals("135") || head3.equals("136") || head3.equals("137")
				|| head3.equals("138") || head3.equals("139")
				|| head3.equals("150") || head3.equals("151")
				|| head3.equals("152") || head3.equals("157")
				|| head3.equals("158") || head3.equals("159")
				|| head3.equals("182") || head3.equals("187")
				|| head3.equals("188") || head3.equals("147")) {
			return CMCC;
		}

二、完整源代码

package test;

public class TestYYS {

	private static String CMCC = "移动";//移动
	private static String UNICOM = "联通";	//联通
	private static String TELECOM = "电信";	//电信
	private static String UNKNWON = "未知";	//未知

	private static boolean isNumeric(String msg) {
		for (int i = 0; i < msg.length(); i++) {
			if (java.lang.Character.isDigit(msg.charAt(i))) {
				continue;
			}
			return false;
		}
		return true;
	}

	public static String getOperater(String phoneNum) {
		String head3 = "";
		String head4 = "";
		phoneNum = phoneNum.trim();

		if (phoneNum == null || phoneNum.length() < 11) {
			return UNKNWON;
		} else {
			if (phoneNum.startsWith("+")) {
				phoneNum = phoneNum.substring(1);
			}
			if (phoneNum.startsWith("86")) {
				phoneNum = phoneNum.substring(2);
			}
		}

		if (phoneNum.length() != 11) {
			return UNKNWON;
		}

		if (!isNumeric(phoneNum)) {
			return UNKNWON;
		}

		head3 = phoneNum.substring(0, 3);
		head4 = phoneNum.substring(0, 4);

		if (head3.equals("135") || head3.equals("136") || head3.equals("137")
				|| head3.equals("138") || head3.equals("139")
				|| head3.equals("150") || head3.equals("151")
				|| head3.equals("152") || head3.equals("157")
				|| head3.equals("158") || head3.equals("159")
				|| head3.equals("182") || head3.equals("187")
				|| head3.equals("188") || head3.equals("147")) {
			return CMCC;
		}
		if (head4.equals("1340") || head4.equals("1341")
				|| head4.equals("1342") || head4.equals("1343")
				|| head4.equals("1344") || head4.equals("1345")
				|| head4.equals("1346") || head4.equals("1347")
				|| head4.equals("1348")) {
			return CMCC;
		}
		if (head3.equals("130") || head3.equals("131") || head3.equals("132")
				|| head3.equals("145") || head3.equals("155")
				|| head3.equals("156") || head3.equals("185")
				|| head3.equals("186")) {
			return UNICOM;
		}
		if (head3.equals("133") || head3.equals("153") || head3.equals("180")
				|| head3.equals("189")) {
			return TELECOM;
		}
		if (head4.equals("1349")) {
			return TELECOM;
		}

		return UNKNWON;
	}
	public static void main(String[] args) {
		System.out.println(TestYYS.getOperater("152********"));
	}
}

二、运行截图

在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不许代码码上红

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值