2012-02-26 73 views
0

iam在mediawiki中創建一個字典,爲此目的,我設計了一個bot在vb.net 當我搜索一個字符串,其中包含[[代碼dosne detect [[in a string一個似乎它繞過[[代碼如下在vb.net中搜索一個方括號字符串

dbCommand.CommandText = "SELECT * FROM data" 
      dbCommand.Connection = dbConn 
      dbConn.Open() 
      Dim dbDR As OleDb.OleDbDataReader = dbCommand.ExecuteReader 

      While dbDR.Read 
       Dim mydata As String = CStr(dbDR("mean".ToString)) 
       If InStr(mydata, vbNewLine & "[[اسم نکرہ]]") Then 
        Dim myid As String = dbDR("ID".ToString) 
        ListBox1.Items.Add(mydid) 
       End If 
      End While 
此代碼搜索

爲vbNewLine &「[[اسمنکرہ]]」中的字符串,然後添加本身份識別碼到列表框,但它搜索「اسمنکرہ」也(不[[)所以它混合起來。我在哪裏犯錯誤?

+1

混合標點符號使用從右到左的渲染語言可能非常棘手。至少試驗使用CompareMethod的InStr重載,以便您可以指定Text而不是Binary的默認值。你的默認文化也起着重要的作用。使用String.ToCharArray()進一步診斷問題並支持String.IndexOf(),以便您可以選擇一個StringComparison。最後但並非最不重要的一點,方括號是SQL語句的轉義字符。 – 2012-02-26 15:46:30

+0

符合漢斯的評論,你確定它是方括號嗎?字符串是爲我找到的,雖然我沒有對數據庫進行測試。 – Fionnuala 2012-02-27 09:43:14

回答

0

用途:dbCommand.CommandText = "SELECT * FROM data WHERE mean like '%[[اسم نکرہ]]%'" 注意一些舊的MS Access版本like查詢不支持%所以從它的源使用*

所以你過濾數據,沒有必要對其進行過濾,在VB.net

+2

這是不正確的,通配符是*或%,具體取決於ANSI-89或ANSI-92:http://office.microsoft.com/en-us/access-help/access-wildcard-character-reference- HA010076601.aspx – Fionnuala 2012-02-26 23:34:26

+0

我無法使用sql查詢,因爲我需要從ms訪問數據庫獲取數據後多次過濾數據。如果還有其他方法? – user934820 2012-02-27 02:26:16

+0

+1,@Remou感謝您的注意 – 2012-02-27 06:17:25