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

如果我运行上面的程序,我得到“不正常”。但是两个字符串都相等,除了引号。如何比较字符串中的引号和不带引号的字符串?

4

4 回答 4

2

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

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

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

于 2013-11-08T07:16:10.060 回答
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 回答