0
在我的應用程序中,用戶可以手動構建rowfiler。一個這樣的例子將是DataView Rowfilter - 將單引號包裹在單引號內
(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();
}
這樣做,打破查詢,因爲它也逃脫的RowFilter引用的開始和結束。 –