我有以下字符串用于与引号进行比较而没有引号。但两个字符串都具有相同的内容。
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");
}
如果我运行上述程序,我得到“不行”。但除了引号之外,两个字符串相等。 如何与字母中没有引号的引号进行比较?
答案 0 :(得分:2)
因为字符串不一样。一个是约翰,第二个是“约翰”,这是不同的。在比较它们之前,您需要删除单引号:
replace("\"", ""); // apply on your Strings
所以它可以是这样的:
if (a.replace("\"", "").equals(a1.replace("\"", ""))) {
// equal
}
答案 1 :(得分:0)
a.replaceAll("\"","").equals(a1.replaceAll("\"","")
答案 2 :(得分:0)
先使用String#contains
或str.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"
。