2010-02-23 2 views
3

У меня возникла очень простая проблема. Некоторое время мелкие вещи может занять целый день :( но поблагодарить StackOverflow членов Ассоциации, которые всегда пытаются помочь :)java string matching problem

Я пытаюсь соответствовать 2 строки, если они совпадают, он должен вернуть TRUE,

Сейчас я использую это

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

Но если var1 имеет значение «сохранить» и var2 имеет значение «Инта» или «айн» и т.д., это все-таки возвращает истину :(. есть ли способ в Java, который может сделать полный текст соответствия не частичное? Например,

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

спасибо! ! !

ответ

5

Почему бы просто не использовать встроенный метод String equals()?

return var1.equals(var2); 
+0

Спасибо большое! ! ! – user238384

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

Будьте осторожны, чтобы не использовать == для сравнения строк в Java, если вы действительно не знаете, что вы делаете.

+0

спасибо, что это сработало. Но почему бы не использовать ==? – user238384

+1

== сравнивает то, на что ссылаются ссылки, и .equals в случае String сравнивает строки в лексикографически. В Java вы можете создать две новые строки, имеющие один и тот же контент, а == - false. В надуманном примере, который вы написали, использование == скорее всего будет работать правильно, но если вы создали две переменные String с новым оператором и задали значение манго, это не сработало. –

+0

Спасибо большое :) +1 – user238384

3

использование equals или equalsIgnoreCase на java.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)); 

В действительности, в то время как s1 и s2 содержит ту же последовательность символов, они не ссылаясь на то же место в памяти. Таким образом, это печатает false и true.