![](/img/trans.png)
[英]Comparison of two identical strings using String.equals() always returns as false
[英]string.equals(string2) returns false though both strings are exactly same, even in length
当两个字符串不同时,我正在尝试执行操作。 字符串实际上是时间,正在检查我从远程数据库获得的新时间是否不同。
我反复从数据库中获取时间,并有一个包含前一时间的变量来检查新时间是否与旧时间相同。 如果不是我做手术。 我看到时间完全相同,但仍然执行代码。
我什至检查了两个字符串的长度,它们完全相同。 我Toast
string1.equals(string2)
并得到 false 虽然它们是相同的。
if( (!lastUpdated.equals(prevTime))) {
swipe(Integer.parseInt(x1.toString()), Integer.parseInt(y1.toString()), Integer.parseInt(x2.toString()), Integer.parseInt(y2.toString()));
CodeType.setLength(0);
Toast.makeText(getApplication(), " lastUp " + lastUpdated + ", prevtime " + prevTime, Toast.LENGTH_SHORT).show();
Toast.makeText(getApplication(), ""+lastUpdated.equals(prevTime), Toast.LENGTH_SHORT).show();
updatePrevTime(lastUpdated);
}
如果您使用StringBuffer
, equals
不会比较两个String
。 这样做:
yourStrBuffer.toString().equals(prevTime.toString())
字符串中有尾随或前导空格。 试试这个: lastUpdated.trim().equals(prevTime.trim())
如果两者相等,这应该是正确的。
检查您的 lastUpdated 和 prevTime。
这是 equals() 的简单示例。 试试这个应该有效。
String Str1 = "Hello";
String Str2 = "Hello";
boolean retVal;
retVal = Str1.equals( Str2 );
System.out.println("Returned Value = " + retVal );
输出
Returned Value = true
使用 TextUtils 类:
您可以尝试使用 TextUtils.equals(CharSeq1, Charseq2) 以防您在比较中遗漏了某些情况。
TextUtils 的方法处理空情况。
如果返回方法仍然相同,那么您可以尝试使用 by char(可能比使用标准 equals 更适合):
for (int i = 0; i < length; i++) {
if (a.charAt(i) != b.charAt(i)) {
return false;
}
}
您可以在此处找到有关该课程的详细信息:
https://android.googlesource.com/platform/frameworks/base/+/b2c4f0bf11f38fd31d80f1256c89b9db043a2929/core/java/android/text/TextUtils.java
时间如何格式化为字符串? 您的值是否包含时区或句点 (am/AM) 之类的字母? 您可以对两个值使用相同的格式化程序还是使用equalsIgnoreCase()
?
说明
如果字符串不是严格的String类,则.equals()方法可能会出现问题。 最近我遇到了同样的问题,一个是 String 类,另一个是EditText.getText() 。 如果您不密切注意,这可能是问题所在,因为getText()方法实际上返回的CharSequence与 String 不同,它会通过自动转换在程序中的其他地方工作,但不会在.equal() 中工作。 但是使用getText().toString()给出了正确的结果,因为现在我正在比较严格的 String 类的两个对象。
(希望它对某人有帮助。)
当它来自 Stream 类时会发生同样的问题,因为它在内部处理字符,也可能是由于编码。 所以检查他们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.