namespace XFEExtension.NetCore.XFETransform; /// /// 转义器 /// public class MultiEscapeConverter { /// /// 转义用符号 /// public string EscapeSymbol { get; set; } = "/"; /// /// 待转义的符号 /// public string[] Escapes { get; set; } /// /// 转义(生成转义后文本) /// /// /// public string Convert(string str) => Escapes.Aggregate(ConvertEscapeSymbol(str), (current, escape) => current.Replace(escape, $"{EscapeSymbol}{escape}")); /// /// 逆转义(生成原文) /// /// /// public string Inverse(string str) { str = Escapes.Aggregate(str, (current, escape) => current.Replace($"{EscapeSymbol}{escape}", escape)); str = InverseEscapeSymbol(str); return str; } private string ConvertEscapeSymbol(string str) => str.Replace(EscapeSymbol, $"{EscapeSymbol}{EscapeSymbol}"); private string InverseEscapeSymbol(string str) => str.Replace($"{EscapeSymbol}{EscapeSymbol}", EscapeSymbol); /// /// 转义器 /// /// 待转义字符 public MultiEscapeConverter(string[] escapes) { Escapes = escapes; } /// /// 转义器 /// /// 转义用符号 /// 待转义字符 public MultiEscapeConverter(string escapeSymbol, params string[] escapes) { EscapeSymbol = escapeSymbol; Escapes = escapes; } }