比较字符串bwlow API 18

时间:2017-05-30 18:40:06

标签: java android string-comparison

我搜索并明确指出==不用于比较字符串变量的内容,而是equals()

但是,AS报告equals()仅适用于API 19(Android 4.4)及以上版本,而且我的目标是API 18(我的唯一手机是Android 4.3)

现在,我正在做if (var1.contains(var2))if (array[i].contains(var))来比较字符串并且它有效,但它对我来说似乎不正确。

在API上实现此目的的正确方法是什么? 19?

感谢。

编辑:澄清(我不知道如何放置内联图片)

With ==

With equals()

equals()的比较失败。

3 个答案:

答案 0 :(得分:1)

Java JDK 1.0中添加了Object类的equals函数。

这个版本于1996年1月23日发布。当时它被称为'Oak',所以从技术上讲它甚至早于Java本身。 (source)。

相比之下,Android API 1于2008年9月23日发布released。此时它将使用Java JDK 1.5(最新版本为Java SE 5 Update 16)。

总而言之,{1}} 在API级别18上可用,必定还有其他错误。

在看到发布的代码后,您正在使用equals,这是一种以空安全方式检查equals()的实用程序方法。
在许多情况下,和你的一样,你不需要额外的空检查,因为你知道至少有一个对象不是null,你可以直接调用equals:

Objects.equals()

您的hourNames数组可能不包含null元素,因此您应将其转换为更易读的顺序:

if("una".equals(hourNames[realHour]))

答案 1 :(得分:0)

使用hourNames[realHour].equals("una")

是的,这是android studio上的一个错误(或者也许来自intellij的想法)。

答案 2 :(得分:0)

由于if (var1.contains(var2))适用于您,为什么不发布确切的字符串?如果您没有调试功能,我建议使用这些来调试字符串差异点: -

boolean    contentEquals(CharSequence cs)
public int compareTo(String anotherString)

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#compareTo(java.lang.String)

你也可以使用模拟器环境并运行这个小测试: -

String s1 = "Test";
String s2 = "Test";
if (s1.equals(s2))
    System.out.println("Equal");
else
    System.out.println("Not Equal");