Dataview RowFilter экранирует недопустимые символы - PullRequest
1 голос
/ 22 июня 2011

Есть ли у кого-нибудь удобный готовый метод для экранирования подстановочных знаков, недопустимые символы в строке, которые должны быть присвоены RowFilter для DataView в C #.Правила в некотором роде как ниже

If a column name contains any of these special characters ~ ( ) # \ / = > < + - * % & | ^ ' " 

[ ], you must enclose the column name within square brackets [ ]. If a column name contains 

right bracket ] or backslash \, escape it with backslash (\] or \\).

спасибо :)) 1006 *

1 Ответ

3 голосов
/ 22 июня 2011

Это будет работать на основе спецификаций, описанных чуть более подробно здесь

protected void Page_Load(object sender, EventArgs e)
{
    CheckValue("fefe[][]12#");
    CheckValue("abvds");
    CheckValue("#");
    CheckValue(@"[][][][][]\\\\\][]");
    CheckValue("^^^efewfew[[]");
}

public static string CheckValue(string value)
{
    StringBuilder sBuilder = new StringBuilder(value);

    string pattern = @"([-\]\[<>\?\*\\\""/\|\~\(\)\#/=><+\%&\^\'])";

    Regex expression = new Regex(pattern);

    if (expression.IsMatch(value))
    {
        sBuilder.Replace(@"\", @"\\");
        sBuilder.Replace("]", @"\]");
        sBuilder.Insert(0, "[");
        sBuilder.Append("]");
    }
    return sBuilder.ToString();
}

Я бросил его на веб-страницу, на которую смотрел, так что пренебрегайте Page_Load и, конечно, проверяйте, как бы вам этого ни хотелось.

Надеюсь, это поможет.

...