对不起,如果这是一个愚蠢的问题。我需要与一个名称进行比较,该名称有三个单词由一个空格分隔。如果名称为null或“This is Android”我会做某事,否则我会做其他事情。例如,以下代码是否正确进行此比较?
if((name==null)||(name.equalsIgnoreCase("This is Android")))
{
//start activity 1
}
else
{
//start activity 2
}
答案 0 :(得分:6)
“这是Android”与“This is Android”不同,equalsIgnoreCase
将返回false。您可以使用trim()
删除空格以及String
的开头或结尾。
希望这有帮助!
答案 1 :(得分:3)
在执行此操作之前,您应该检查name
是否为null,否则它看起来不错。 (除了,它应该是if
而不是If
):
//either
if(name != null) {
if(name.equalsIgnoreCase("This is Android") {
}
}
//or
if("This is Android ".equalsIgnoreCase(name)) {
<强>更新强>
当您比较字符串时,空格会计数。所以,基本上“Hello world”和“Hello world”不相等。
您需要使用.trim()
方法忽略周围的空格。
name = name.trim(); //since strings are immutable you need to assign return value to name
if("This is Android".equalsIgnoreCase(name)) {
答案 2 :(得分:1)
始终在等于左侧的常量字符串,这确保没有NPE:
像这样:if ("This is Android ".equalsIgnoreCase(str1)) {
// start activity 1
} else {
// start activity 2
}
如果您不想要空间,请添加trim()
:
if ("This is Android ".trim().equalsIgnoreCase(str1)) {
// start activity 1
} else {
// start activity 2
}
答案 3 :(得分:1)
if("This is Android".equalsIgnoreCase(name))
// start activity 1
} else {
// start activity 2
}
或防弹(如果用户粘贴的值在字符串末尾有不需要的空格)
if(name != null && "This is Android".equalsIgnoreCase(name.trim()))
// start activity 1
} else {
// start activity 2
}