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;
}
}