2012-02-27 121 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 []),
然后在它们的每一个元素进行比较。
也许你将能够看到差异。