String.Mask()、隐藏字符串中部分字符
主要用于隐藏姓名、手机号、信用卡号等,如界面上要求隐藏手机号中间4位。
String.Mask()、隐藏字符串中部分字符
/// <summary>
/// 隐藏字符串中部分字符
/// </summary>
/// <param name="value"></param>
/// <param name="fromStart">开始位置(需大于等于1)</param>
/// <param name="toEnd">结束位置(需小于整个字符串长度,且大于fromStart)</param>
/// <param name="maskChar">替换的字符</param>
/// <returns></returns>
public static string Mask(this string value, int fromStart, int toEnd, char maskChar='*')
{
if (string.IsNullOrEmpty(value))
return value;
if (fromStart < 1) fromStart = 1;
if (fromStart > value.Length) return value;
if (toEnd < fromStart) return value;
if (toEnd > value.Length) toEnd = value.Length;
var sb = new StringBuilder(value.Length);
sb.Append(value[..(fromStart-1)]);
for (var i = fromStart; i <= toEnd; i++)
sb.Append(maskChar);
sb.Append(value[toEnd..]);
return sb.ToString();
}
如何使用
var str = "14223832374";
var maskString = str.Mask(4, 7);
Console.WriteLine(maskString); //输出 142****2374