【问题标题】:DataView Rowfilter - Escape single quote wrapped inside single quotesDataView Rowfilter - 转义单引号包裹在单引号内
【发布时间】:2014-07-01 12:02:56
【问题描述】:

在我的应用程序中,用户可以手动构建 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();
}

【问题讨论】:

    标签: c# datatable dataview rowfilter


    【解决方案1】:

    转义单引号

    sBuilder.Append(@"\'");
    

    【讨论】:

    • 这样做会破坏查询,因为它还会转义开始和结束行过滤器引号。
    猜你喜欢
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 1970-01-01
    相关资源
    最近更新 更多