2010-02-23 54 views
3

我正面臨一個非常基本的問題。有的時候小東西可以把你整天:( 但感謝到計算器承包商,客人誰總是盡力幫助:)java字符串匹配問題

我想,如果他們匹配它應該返回TRUE匹配2個字符串

我現在用的這

if (var1.indexOf(var2) >= 0) { 
return true; 
} 

但如果VAR1有值爲「保持」和VAR2具有價值「INTA」或「泉」等,它仍然返回true :(。 有在java中的任何方式,可以做到全文不匹配部分? 例如

if("mango"=="mango"){ 
return true; 
} 

謝謝! ! !

回答

5

爲什麼不直接使用內置字符串equals()方法?

return var1.equals(var2); 
+0

非常感謝! ! ! – user238384 2010-02-23 01:25:00

4
if("mango".equals("mango")) { 
    return true; 
} 

要小心,不要使用Java中的字符串比較==除非你真的知道自己在做什麼。

+0

感謝它的工作。但爲什麼不使用==? – user238384 2010-02-23 01:25:39

+1

==正在比較引用指向的內容,而在String的情況下.equals正在按字典順序比較字符串。在Java中,您可以創建兩個具有相同內容的新字符串,並且==將返回false。在你寫的人爲的例子中,使用==很可能看起來工作正常,但如果你用新的操作符創建了兩個字符串變量並將該值設置爲芒果,它將不起作用。 – 2010-02-23 01:28:31

+0

非常感謝:) +1 – user238384 2010-02-23 01:33:25

3

使用equalsequalsIgnoreCasejava.util.String匹配字符串。您還需要檢查您正在比較的對象上是否有null,我通常更願意使用commonsStringUtils來達到這些目的。它對於常用的字符串操作有非常好的實用性。

1

下面是一個例子來說明爲什麼==是不是你想要的:

String s1 = new String("something"); 
String s2 = new String("something"); 
System.out.println(s1 == s2); 
System.out.println(s1.equals(s2)); 

在效果上,而s1s2包含相同的字符序列,它們不是指同一個內存位置。因此,這打印falsetrue