namespace XFEExtension.NetCore.XFETransform;
///
/// 转义器
///
/// 待转义字符
/// 起始转义用符号
/// 重复转义字符
/// 结束转义用符号
public class EscapeConverter(string escape, string startEscapeSymbol, string repeatEscapeSymbol, string endEscapeSymbol)
{
///
/// 起始转义符号
///
public string StartEscapeSymbol { get; set; } = startEscapeSymbol;
///
/// 重复转义符号
///
public string RepeatEscapeSymbol { get; set; } = repeatEscapeSymbol;
///
/// 结束转义符号
///
public string EndEscapeSymbol { get; set; } = endEscapeSymbol;
///
/// 待转义的符号
///
public string Escape { get; set; } = escape;
///
/// 转义(生成转义后文本)
///
///
///
public string Convert(string str)
{
str = ConvertEscapeSymbol(str);
str = str.Replace(Escape, $"{StartEscapeSymbol}{RepeatEscapeSymbol}{EndEscapeSymbol}");
return str;
}
///
/// 逆转义(生成原文)
///
///
///
public string Inverse(string str)
{
str = str.Replace($"{StartEscapeSymbol}{RepeatEscapeSymbol}{EndEscapeSymbol}", Escape);
str = InverseEscapeSymbol(str);
return str;
}
private string ConvertEscapeSymbol(string str) => str.Replace($"{StartEscapeSymbol}{RepeatEscapeSymbol}", $"{StartEscapeSymbol}{RepeatEscapeSymbol}{RepeatEscapeSymbol}");
private string InverseEscapeSymbol(string str) => str.Replace($"{StartEscapeSymbol}{RepeatEscapeSymbol}{RepeatEscapeSymbol}", $"{StartEscapeSymbol}{RepeatEscapeSymbol}");
}