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

   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 = 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:  }
posted @ 2014-05-09 13:35  MyFirstHome  阅读(551)  评论(0编辑  收藏  举报