using System.Text.RegularExpressions; namespace WX.CRM.Common { public class PhoneHelper { /// /// 格式化以手机号码作为用户名的username /// /// /// public static string FormatPhoneUserName(string username) { string newUsername = GetFormatPhoneUserName(username);//手机号码格式化 //newUsername = FormatUserName(newUsername);//用户名格式化 //return newUsername; return newUsername; } /// /// 格式化以手机号码作为用户名的username(存在多个用户名) /// /// /// public static string FormatPhoneMoreUserName(string username) { string newUsername = GetFormatPhoneUserName(username);//手机号码格式化 if (string.IsNullOrEmpty(newUsername)) return newUsername; string userNames = string.Empty; foreach (var item in newUsername.Split(',')) { userNames += FormatUserName(item) + ",";//用户名格式化 } userNames = userNames.Substring(0, userNames.Length - 1); return userNames; } /// /// 格式化以手机号码作为用户名的username /// /// 需要改动的用户名 /// /// public static string FormatPhoneUserNameContent(string username) { string newUsername = GetFormatPhoneUserName(username);//手机号码格式化 return newUsername; } /// /// 格式化以手机号码作为用户名的username /// /// 需要改动的用户名 /// 需要改动的用户名 /// /// public static string FormatPhoneUserNameContent(string username, string subTypeCode) { string newUsername = GetFormatPhoneUserName(username);//手机号码格式化 if (subTypeCode != "SMS_ResetPwd") return newUsername; //创建对象 Regex regex = new Regex("账号(?[\\s\\S]*?)的", RegexOptions.Multiline); //匹配 MatchCollection match = regex.Matches(username); //取得第一个值 if (match.Count > 0) { string value = match[0].Groups["value"].ToString(); string newValue = FormatUserName(value); newUsername = newUsername.Replace(string.Format("账号{0}的", value), string.Format("账号{0}的", newValue)); } //创建对象 Regex regex2 = new Regex("帐号(?[\\s\\S]*?),", RegexOptions.Multiline); //匹配 MatchCollection match2 = regex2.Matches(newUsername); //取得第一个值 if (match2.Count > 0) { string value1 = match2[0].Groups["value"].ToString(); string newValue1 = FormatUserName(value1); newUsername = newUsername.Replace(string.Format("帐号{0},", value1), string.Format("帐号{0},", newValue1)); } return newUsername; } /// /// 用户名 /// /// /// public static string FormatUserName(string userName) { /* 用户名屏蔽规则: 1、手机号形式的按原处理规则中间几位屏蔽; 2、否则看用户名长度,小于等于5位的,第一位不屏蔽,后面的屏蔽,比如“test1”,处理后为“t****”; 3、5位以上的,用户名长度除2向下取整,再减1做为起始值,从起始值开始后面4位用*号;比如“test123”,处理后为“te****3” */ if (string.IsNullOrEmpty(userName)) return ""; if (userName == "未设置") return userName; string newUserName = userName; //判断 是否已经在手机号屏蔽的时候屏蔽过一次 if (userName.IndexOf("*****") > -1) { return newUserName; } int nameLth = newUserName.Length; if (nameLth <= 5) { newUserName = newUserName.Substring(0, 1) + GetAsterisk(nameLth - 1); } else { int startIndex = nameLth / 2; startIndex = startIndex - 1; newUserName = newUserName.Substring(0, startIndex) + "****" + newUserName.Substring(startIndex + 4, nameLth - startIndex - 4); } return newUserName; } /// /// 格式化以手机号码作为用户名的username /// /// /// private static string GetFormatPhoneUserName(string username) { string newUsername = username; if (string.IsNullOrWhiteSpace(newUsername)) return newUsername; while (Utility.ContainMobile(newUsername)) { string phone = Utility.GetMobile(newUsername); if (string.IsNullOrWhiteSpace(phone)) break; newUsername = newUsername.Replace(phone, (phone.Substring(0, 3) + "*****" + phone.Substring(8, 3))); } return newUsername; } /// /// 获取星号 /// /// 需要返回的星号数量 /// private static string GetAsterisk(int number) { string xingHao = string.Empty; if (number == 0) return xingHao; for (int i = 0; i < number; i++) { xingHao += "*"; } return xingHao; } } }