我有一个问题类,其中包含一些属性,包括位置名称,即字符串。我还有一个 Location 类,它有一些属性和一个 name 方法。我想检查两者是否相等,这里有一些方法和结果:
Log.e("", question.getLocation() + ", size:" + question.getLocation().length());
Log.e("", mLocation.getLocationName() + ", size:" + mLocation.getLocationName().length());
Log.e("", "equals: " + question.getLocation().equalsIgnoreCase(mLocation.getLocationName()));
Log.e("", "location equals self: " + mLocation.getLocationName().equalsIgnoreCase(mLocation.getLocationName()));
Log.e("", "question location equals self: " + question.getLocation().equalsIgnoreCase(question.getLocation()));
这是日志:
10-10 19:11:35.618 1893-1893/com.example E/﹕ Machine Room, size:12
10-10 19:11:35.618 1893-1893/com.example E/﹕ Machine Room, size:12
10-10 19:11:35.618 1893-1893/com.example E/﹕ equals: false
10-10 19:11:35.618 1893-1893/com.example E/﹕ location equals self: true
10-10 19:11:35.618 1893-1893/com.example E/﹕ question location equals self: true
我不知道发生了什么以及为什么两个字符串不相等?谁能告诉我?
public class Question {
...
private String location;
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
}
public class Location {
...
private String locationName;
public String getLocationName() {
return locationName;
}
public void setLocationName(String ln) {
locationName = ln;
}
}
它们只有 getter 和 setter,并且在其他任何地方都没有修改,因此没有任何内容触及日志之间的两个单词。
解决方案
正如评论中提到的 RC:将两个字符串都转储为字节并进行比较,也许该空间不是其中一个字符串上的空格(alt+0160 在 MSWindows 下产生一个“相似”的空格)