2012-02-27 99 views
-2

我面臨奇怪的問題,我從數據庫中獲取字符串並與字符串進行比較,但是當我將它們與等於運算符進行比較時,它們並不相等。Java字符串比較

String1 =愛情是一種可以玩兩種遊戲的遊戲。 String2 =愛情是一個可以玩的遊戲,兩者都可以贏。

  Cursor data = database2.query("Quote", fields, null, null, null, null, null); 
     data.moveToFirst(); 


     for(int i = 0; i < data.getCount() ; i++){ 
     if(data.getString(2).trim().equals(_qt2.trim())){ 
       Log.i("Found Matching quote", ""); 
       data.moveToPosition(i); 
      } 
     } 

這是日誌:

E/Data 2(8818): Love is a game that two can play and both win. 
    E/Data 3(8818): Love is a game that two can play and both win. 

感謝

+2

嘗試使用data.getString(2).trim()。equals(_qt2.trim()) – 2012-02-27 11:46:42

+3

可以顯示更多代碼嗎?也許你可以記錄字符串,以確保它們完全平等。 – user717572 2012-02-27 11:47:16

+2

如果data.getString(2)和_qt2具有相同的內容,則if將返回true。您需要展示更多代碼,例如表和查詢,以及_qt2的聲明/定義。 – mindandmedia 2012-02-27 11:47:41

回答

2

使用TRIM(),忽略大小寫幷包含(如果您的方案支持的話)

2
if(data.getString(2).trim().equals(_qt2.trim())){ 
       Log.i("Found Matching quote", ""); 
      } 

我認爲data.getString(2)是包含String1中和_qt2包含String2的在你的問題中所述。此外,我recomonded你先檢查與

System.out.println(data.getString(2)); 

System.out.println(_qt2); 
1

也許字符串不包含什麼你認爲他們這樣做。打印出每個的內容,以確保。請參閱其他答案,瞭解如何修整空白等。

或者,您可能沒有看到預期的日誌輸出,因爲您已將日誌消息放入Tag參數中,而不是Message參數。試試這個。

Log.i("My App", "Found matching quote"); 
1

轉換兩個字符串成字節[](或CHAR []),
然後在它們的每一個元素進行比較。
也許你將能夠看到差異。