技术思绪摘录旅行笔记
如果用算法来生成手机号,需要怎么做呢?实际场景中经常会用到手机号,那么手机号有那些,知道了规则,那么生成就知道如何下手了,这篇文章就介绍了如何生成手机号码。

首先说下基本的规则:

    1、中国手机号是1开头的,由中国移动、电信、联通来负责运营不同的号码段。

    2、目前新增了虚拟运营商,号码段是170开头的。

    3、各个运营商有专门的上网卡,这种卡号只能上网,所以不会出现在业务中。

规则如下:

    中国电信号段

    133、149、153、173、177、180、181、189、199

    中国联通号段

    130、131、132、145、155、156、166、171、175、176、185、186、166

    中国移动号段

    134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、172、178、182、183、184、187、188、198

    其他号段

    14号段以前为上网卡专属号段,如中国联通的是145,中国移动的是147等等。

    虚拟运营商

    电信:1700、1701、1702

    移动:1703、1705、1706

    联通:1704、1707、1708、1709、171

    卫星通信:1349


有了这些准备就好办了,算法如下

private static string[] telStarts = "133,149,153,173,177,180,181,189,199,130,131,132,145,155,156,166,171,175,176,185,186,166,134,135,136,137,138,139,147,150,151,152,157,158,159,172,178,182,183,184,187,188,198,170".Split(',');


/// <summary>
/// 随机生成电话号码
/// </summary>
/// <returns></returns>
public static string getRandomTel()
{
    int index = RandHelper.Next(0, telStarts.Length - 1);
    string first = telStarts[index];
    string second = (RandHelper.Next(100, 888) + 10000).ToString().Substring(1);
    string thrid = (RandHelper.Next(1, 9100) + 10000).ToString().Substring(1);
    return first + second + thrid;
}

调用如下:

 string mobile=getRandomTel();

此算法算出来的手机号并非完全正确,因为有些手机号第四位并非0-9,可能有些数字是没有的,如果在打码使用的场景下是没有问题的,比如158****2846,这种显示的话,就完全正确了。

CarsonIT 微信扫码关注公众号 策略、创意、技术

留下您的脚步

 

最近评论

查看更多>>

站点统计

总文章数:275 总分类数:18 总评论数:88 总浏览数:124.90万

精选推荐

阅读排行

友情打赏

请打开您的微信,扫一扫