DataView Rowfilter -转义单引号包裹在单引号内

本文关键字:单引号 包裹 转义 Rowfilter DataView | 更新日期: 2023-09-27 18:10:53

在我的应用程序中,用户可以手动构建rowfiler。例如

(Message LIKE '%'[Search]'%') OR (Message LIKE '%'[Search2]'%')

我该如何逃脱呢?目前,我使用下面的函数来转义括号和斜杠,但我需要转义整个过滤器字符串中的单引号。

public static string CheckValue(string value) { StringBuilder sBuilder = new StringBuilder();
    string pattern = @"([-']'[<>'?'*'''""/'|'~'(')'#/=><+'%&'^''])";
    Regex expression = new Regex(pattern);
    if (expression.IsMatch(value))
    {
        foreach (char c in value)
        {
            switch(c){
                case '''':
                     sBuilder.Append("''");
                    break;
                case '[':
                    sBuilder.Append(@"[[]");
                    break;
                case ']':
                    sBuilder.Append(@"[]]");
                    break;
                default: 
                    sBuilder.Append(c);
                    break;
            }
        }
    }
    return sBuilder.ToString();
}

DataView Rowfilter -转义单引号包裹在单引号内

转义单引号

sBuilder.Append(@"''");