字符串与双引号的比较

时间:2013-11-08 07:12:42

标签: java string

我有以下字符串用于与引号进行比较而没有引号。但两个字符串都具有相同的内容。

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

如果我运行上述程序,我得到“不行”。但除了引号之外,两个字符串相等。 如何与字母中没有引号的引号进行比较?

4 个答案:

答案 0 :(得分:2)

因为字符串不一样。一个是约翰,第二个是“约翰”,这是不同的。在比较它们之前,您需要删除单引号:

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

所以它可以是这样的:

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

答案 1 :(得分:0)

a.replaceAll("\"","").equals(a1.replaceAll("\"","")

答案 2 :(得分:0)

先使用String#containsstr.replaceAll("\"",""),然后使用equals()

答案 3 :(得分:0)

或者,添加引号,正如MadProgrammer建议的那样:

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

这比其他解决方案更具限制性,其中一些解决方案会匹配由于剥离(replaceAll)或仅需要部分匹配(contains)而有点不同 1 的字符串({ {1}}) - 哪种方法“更正确”取决于问题要求。


1 replaceAll匹配"\"jo\"hn\""contains匹配"tom is not john"