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");
    }

上記のプログラムを実行すると、「not ok」になりましたが、引用符を除いて両方の文字列が同じです。文字列に引用符を付けずに比較するにはどうすればよいですか?

4

4 に答える 4

2

文字列は同じではないためです。1 つは john で、2 番目は「john」です。違います。それらを比較する前に、一重引用符を削除する必要があります。

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

したがって、次のようになります。

if (a.replace("\"", "").equals(a1.replace("\"", ""))) {
       // equal
}
于 2013-11-08T07:14:36.363 に答える
0
a.replaceAll("\"","").equals(a1.replaceAll("\"","")
于 2013-11-08T07:14:27.313 に答える
0

または、MadProgrammer が提案したように、引用符を追加します。

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

これは他の解決策よりも制限的であり、そのうちのいくつかは、ストリッピング ( ) または部分一致のみを必要とする( ) ためにかなり異なる1の文字列に一致します。どちらのアプローチが「より正しい」かは、問題の要件によって異なります。replaceAllcontains


1 replaceAllが一致"\"jo\"hn\""し、containsが一致し"tom is not john"ます。

于 2013-11-08T07:18:05.677 に答える