using System.Text; using System.Text.RegularExpressions; namespace ZelWiki.Library { /// /// 导航 /// public class Navigation { public static string Clean(string? str) { if (str == null) { return string.Empty; } str = str.Trim().Trim([':']).Trim(); if (str.Contains("::")) { throw new Exception("导航不能包含命名空间"); } str = str.Replace(""", "\"") .Replace("&", "&") .Replace("<", "<") .Replace(">", ">") .Replace(" ", " "); str = str.Replace('\\', '/'); str = str.Replace("::", "_").Trim(); var sb = new StringBuilder(); foreach (var c in str) { if (char.IsWhiteSpace(c) || c == '.') { sb.Append('_'); } else if (char.IsLetterOrDigit(c) || c == '_' || c == '/' || c == '-') { sb.Append(c); } } var result = sb.ToString(); result = Regex.Replace(result, @"[_]{2,}", "_"); result = Regex.Replace(result, @"[/]{2,}", "/"); return result.ToLower(); } } }