首页 > 代码库 > 手机号段确定手机号码服务商类别

手机号段确定手机号码服务商类别

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:   
   6:  namespace AnkeEdu.Tools
   7:  {
   8:   
   9:      /// <summary>
  10:      /// 电话号码帮助类
  11:      /// author:Andrew.He
  12:      /// 给定一个电话号码,返回电话号码号段所属网络
  13:      /// </summary>
  14:      public class PhoneHelper
  15:      {
  16:          #region mobileRegex 检测号码的正则表达式
  17:          /// <summary>
  18:          /// 检测号码的正则表达式
  19:          /// </summary>
  20:          private const string mobileRegex = @"(86)?0?1\d{10}";
  21:          #endregion
  22:   
  23:          #region keyValues 手机号段集合,PhoneType.Mobile 移动 PhoneType.Unicom 联通 PhoneType.Telecom 电信
  24:          /// <summary>
  25:          /// 手机号段集合,PhoneType.Mobile 移动 PhoneType.Unicom 联通 PhoneType.Telecom 电信
  26:          /// </summary>
  27:          private static List<PhoneKeyValue> keyValues = new List<PhoneKeyValue>()
  28:          {
  29:              new PhoneKeyValue("1340",PhoneType.Mobile),
  30:              new PhoneKeyValue("1341",PhoneType.Mobile),
  31:              new PhoneKeyValue("1342",PhoneType.Mobile),
  32:              new PhoneKeyValue("1343",PhoneType.Mobile),
  33:              new PhoneKeyValue("1344",PhoneType.Mobile),
  34:              new PhoneKeyValue("1345",PhoneType.Mobile),
  35:              new PhoneKeyValue("1346",PhoneType.Mobile),
  36:              new PhoneKeyValue("1347",PhoneType.Mobile),
  37:              new PhoneKeyValue("1348",PhoneType.Mobile),
  38:              new PhoneKeyValue("135",PhoneType.Mobile),
  39:              new PhoneKeyValue("136",PhoneType.Mobile),
  40:              new PhoneKeyValue("137",PhoneType.Mobile),
  41:              new PhoneKeyValue("138",PhoneType.Mobile),
  42:              new PhoneKeyValue("139",PhoneType.Mobile),
  43:              new PhoneKeyValue("147",PhoneType.Mobile),
  44:              new PhoneKeyValue("150",PhoneType.Mobile),
  45:              new PhoneKeyValue("151",PhoneType.Mobile),
  46:              new PhoneKeyValue("152",PhoneType.Mobile),
  47:              new PhoneKeyValue("157",PhoneType.Mobile),
  48:              new PhoneKeyValue("158",PhoneType.Mobile),
  49:              new PhoneKeyValue("159",PhoneType.Mobile),
  50:              new PhoneKeyValue("182",PhoneType.Mobile),
  51:              new PhoneKeyValue("183",PhoneType.Mobile),
  52:              new PhoneKeyValue("184",PhoneType.Mobile),
  53:              new PhoneKeyValue("187",PhoneType.Mobile),
  54:              new PhoneKeyValue("188",PhoneType.Mobile),
  55:              new PhoneKeyValue("130",PhoneType.Unicom),
  56:              new PhoneKeyValue("131",PhoneType.Unicom),
  57:              new PhoneKeyValue("132",PhoneType.Unicom),
  58:              new PhoneKeyValue("145",PhoneType.Unicom),
  59:              new PhoneKeyValue("155",PhoneType.Unicom),
  60:              new PhoneKeyValue("156",PhoneType.Unicom),
  61:              new PhoneKeyValue("185",PhoneType.Unicom),
  62:              new PhoneKeyValue("186",PhoneType.Unicom),
  63:              new PhoneKeyValue("133",PhoneType.Telecom),
  64:              new PhoneKeyValue("1349",PhoneType.Telecom),
  65:              new PhoneKeyValue("153",PhoneType.Telecom),
  66:              new PhoneKeyValue("180",PhoneType.Telecom),
  67:              new PhoneKeyValue("181",PhoneType.Telecom),
  68:              new PhoneKeyValue("189",PhoneType.Telecom)
  69:          };
  70:          #endregion
  71:   
  72:          #region GetPhoneType 检测手机号码是否为对应的手机类别
  73:          /// <summary>
  74:          /// 检测手机号码是否为对应的手机类别
  75:          /// </summary>
  76:          /// <param name="phoneNo"></param>
  77:          /// <returns></returns>
  78:          public static PhoneType GetPhoneType(string phoneNo)
  79:          {
  80:              if (!IsPhoneNo(phoneNo))
  81:              {
  82:                  return PhoneType.NotPhoneNo;
  83:              }
  84:   
  85:              var model = keyValues.Where(x => phoneNo.StartsWith(x.key)).FirstOrDefault();
  86:              if (model != null)
  87:              {
  88:                  return model.PhoneTypeValue;
  89:              }
  90:   
  91:              return PhoneType.Other;
  92:          }
  93:          #endregion
  94:   
  95:          #region IsPhoneNo 检测号码是否为手机号码
  96:          /// <summary>
  97:          /// 检测号码是否为手机号码
  98:          /// </summary>
  99:          /// <param name="phoneNo"></param>
 100:          /// <returns></returns>
 101:          private static bool IsPhoneNo(string phoneNo)
 102:          {
 103:              if (string.IsNullOrEmpty(phoneNo))
 104:              {
 105:                  return false;
 106:              }
 107:   
 108:              return System.Text.RegularExpressions.Regex.Match(phoneNo, mobileRegex,
 109:                  System.Text.RegularExpressions.RegexOptions.IgnoreCase |
 110:                  System.Text.RegularExpressions.RegexOptions.ECMAScript).Success;
 111:          }
 112:          #endregion
 113:      }
 114:   
 115:      #region PhoneKeyValue 手机号段实体
 116:      /// <summary>
 117:      /// 手机号段实体
 118:      /// </summary>
 119:      public class PhoneKeyValue
 120:      {
 121:          public PhoneKeyValue(string key,PhoneType type)
 122:          {
 123:              this.key = key;
 124:              this.PhoneTypeValue = http://www.mamicode.com/type;
 125:          }
 126:          public string key { get; set; }
 127:          public PhoneType PhoneTypeValue { get; set; }
 128:      }
 129:      #endregion
 130:   
 131:      #region PhoneType 号码类别
 132:      /// <summary>
 133:      /// 号码类别
 134:      /// </summary>
 135:      public enum PhoneType
 136:      {
 137:          /// <summary>
 138:          /// 不是一个手机号码
 139:          /// </summary>
 140:          NotPhoneNo,
 141:          /// <summary>
 142:          /// 未知所属,其他
 143:          /// </summary>
 144:          Other,
 145:          /// <summary>
 146:          /// 移动号码
 147:          /// </summary>
 148:          Mobile,
 149:          /// <summary>
 150:          /// 联通号码
 151:          /// </summary>
 152:          Unicom,
 153:          /// <summary>
 154:          /// 电信号码
 155:          /// </summary>
 156:          Telecom
 157:      }
 158:      #endregion
 159:  }
<style type="text/css">.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } </style>