2011-06-22 76 views
0

是否有人可以方便地使用方法來轉義通配符,字符串中的無效字符將被分配到RowFilter的C#中DataView。這些規則有點像下面Dataview RowFilter轉義無效字符

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 \\). 

謝謝:)

回答

3

這將工作基礎上稍微詳細列出的規格發現here

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,當然還有你想要的測試。

希望有所幫助。

+0

對不起,但沒有,你是否嘗試類似下面的輸入'Status ='TRUE'' – Deeptechtons

+0

根據我如何理解作者的問題是正確的。他們真正想要的是最後一個右括號,如果它被添加爲名稱的一部分,則不會被轉義。這篇文章http://www.csharp-examples.net/dataview-rowfilter/幫助我更好地理解他們想要的東西。我更新了代碼以反映這一點。 –

+0

另請注意,quickwatch或watch窗口將顯示轉義值。如果你點擊文本可視化器上的放大鏡,你會看到實際的輸出。 'TRUE'現在返回爲['TRUE'] –

相關問題