RankNicknameMask.cs 1.2 KB

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