2013-11-08 13 views
0

У меня есть следующая строка для сравнения с кавычками и без кавычек. Но обе строки имеют одинаковый контент.Сравнение строк с двойными кавычками

String a="\"john\""; 
    String a1="john"; 
    System.out.println(a+" "+a1); 
    if(a.equals(a1)){ 
     System.out.println("ok"); 
    }else{ 
     System.out.println("not ok"); 
    } 

Если я запустил вышеуказанную программу, я получил «не нормально». Но обе строки равны, кроме кавычек. Как сравнить с кавычками без кавычек в строках?

+2

Вы пытаетесь использовать 'String # contains' или wrap' a1' в кавычках – MadProgrammer

ответ

2

Потому что строки не одинаковы. Один из них - Джон, а второй - «Джон», это другое. Вы должны удалить одиночные кавычки перед сравнением их:

replace("\"", ""); // apply on your Strings 

Так что может быть так:

if (a.replace("\"", "").equals(a1.replace("\"", ""))) { 
     // equal 
} 
0
a.replaceAll("\"","").equals(a1.replaceAll("\"","") 
+0

Я думаю, вы имеете в виду 'a.replaceAll (" \ "", ""). Equals (a1.replaceAll ("\" "," "))' –

+0

действительно так. Проклятие редактора SO снова ударяет – pinoyyid

0

использования String#contains или str.replaceAll("\"","") первым, а затем использовать equals()

0

В качестве альтернативы, добавить кавычки, как предложил MadProgrammer:

String a="\"john\""; 
String a1="john"; 
a.equals("\"" + a1 + "\"") // true 

Это более строгое, чем другие решения, некоторые из которых соответствовали бы строкам, которые являются хорошим битыми различным за счетом зачистки (replaceAll) или только требует частичного совпадения (contains) - какой подход является «более правильным» зависит от требований проблемы.


replaceAll будет соответствовать "\"jo\"hn\"" и contains будет соответствовать "tom is not john".

Смежные вопросы