using System.Application.Columns; using System.Common; using System.Linq; namespace System.Application { public static class PhoneNumberHelper { const char HideChar = '*'; public const int Length = 11; /// /// 手机号码隐藏中间四位数字 /// 实现逻辑:字符串大于等于7时,将下标3~6替换为隐藏字符 /// /// /// /// public static string ToStringHideMiddleFour(string? phoneNumber, char hideChar = HideChar) { if (!string.IsNullOrWhiteSpace(phoneNumber)) { if (phoneNumber.Length >= 7) { var array = phoneNumber.ToCharArray(); array[3] = hideChar; array[4] = hideChar; array[5] = hideChar; array[6] = hideChar; return new string(array); } return phoneNumber; } return string.Empty; } /// public static string ToStringHideMiddleFour(this IPhoneNumber phoneNumber, char hideChar = HideChar) => ToStringHideMiddleFour(phoneNumber.PhoneNumber, hideChar); /// public static string ToStringHideMiddleFour(this IReadOnlyPhoneNumber phoneNumber, char hideChar = HideChar) => ToStringHideMiddleFour(phoneNumber.PhoneNumber, hideChar); /// /// 获取中国大陆地区11位手机号码 /// /// /// public static string? GetChineseMainlandPhoneNumber11(string? value) { if (!string.IsNullOrWhiteSpace(value)) { var chars = new char[11]; var index = chars.Length - 1; for (var i = value.Length - 1; i >= 0; i--) { if (index < 0) break; var item = value[i]; if (Constants.Digits.Any(x => x == item)) { chars[index--] = item; } } var valueArray = chars.Where(x => x != default).ToArray(); if (valueArray.Length == 11) { value = new string(valueArray); if (!string.IsNullOrWhiteSpace(value)) { return value; } } } return null; } } }