2011-05-14 102 views
0

我面臨問題過濾字符串時,我插入數據到我的表。我的意思是像'<等特殊字符我可以做簡單的替換,但我需要保存原始序列的字符。提前感謝您的幫助。過濾器輸入字符串

+2

你能提供你的代碼來更好地理解你的問題嗎? – jams 2011-05-14 13:40:07

回答

0

如果您正在尋找通過代碼更改字符串,您可以指定一個字符數組從字符串中去除。該的string.join可以使用分割方法來刪除這些字符,並把它重新走到一起

string s = "He<llo;< I -am a $stri-ng;"; 

    // Add other characters that you deem unacceptable 
    char[] invalidChars = { ';', '<', '>', '-' }; 
    s = String.Join("", s.Split(invalidChars)); 

在保存原始序列而言,這是很模糊的,所以我不知道你的意思,但什麼躍入我的想法是使用數據庫並創建第二列,以便您擁有一個用於輸入內容的列,另一列用於固定值。兩種方式彈出到我頭上來控制這種

  1. 數據庫觸發器 - 設計一些功能,剝去字符,並保存到 固定值列。在這樣做的風險在於,如果有人決定密鑰您還沒有被困在一個字符,你不僅會修改功能,但必須在其上運行的是下滑了

  2. 計算列規格的任何記錄這個功能 - 創建表達式基於去除 字符的功能並讓列控制此值 這足以抵消通過觸發器添加的風險。當你修改函數時,因爲這是一個計算列,理論上它會更新這個值。 (糾正我,如果我錯了,在這裏,沒有測試過,只是在理論上)

可能不是最有效的方法,但是這是我會和當前工具使用。

+0

沒問題,但它不是我需要的。如果我們正在尋找管理sqlite的工具(如http://sqliteadmin.orbmu2k.de/)。我們看到我們可以添加字段像<'等。主要問題是如何實現的,它是sqlite函數或用戶定義的。例如,爲了防止mysql + php中的sql注入,我們可以使用mysql_real_escape_string – gingray 2011-05-16 04:40:52