| 123456789101112131415161718192021222324252627 |
- /// <summary>排行榜昵称展示:邮箱形态则对 @ 前本地段脱敏。</summary>
- public static class RankNicknameMask
- {
- /// <summary>
- /// 若为邮箱格式(单一 @ 且域名段含 .),保留 @ 前本地段除最后 3 个字符外的部分,最后 3 个字符固定显示为 ***;
- /// 本地段长度 ≤3 时整段用等长 * 代替(如 abc@x.y → ***@x.y)。
- /// 例:zhangsan@qq.com → zhang***@qq.com
- /// </summary>
- public static string ForRankDisplay(string nickname)
- {
- if (string.IsNullOrEmpty(nickname)) return nickname;
- int at = nickname.IndexOf('@');
- if (at <= 0 || at != nickname.LastIndexOf('@') || at >= nickname.Length - 1)
- return nickname;
- string local = nickname.Substring(0, at);
- string domain = nickname.Substring(at + 1);
- if (local.Length == 0 || domain.Length == 0 || domain.IndexOf('.') < 0)
- return nickname;
- if (local.Length > 3)
- {
- string prefix = local.Substring(0, local.Length - 3);
- return prefix + "***" + "@" + domain;
- }
- return new string('*', local.Length) + "@" + domain;
- }
- }
|