与具有空白字符串的字符串比较

时间:2011-12-15 15:37:04

标签: java string-comparison

对不起,如果这是一个愚蠢的问题。我需要与一个名称进行比较,该名称有三个单词由一个空格分隔。如果名称为null或“This is Android”我会做某事,否则我会做其他事情。例如,以下代码是否正确进行此比较?

 if((name==null)||(name.equalsIgnoreCase("This is Android")))
     { 
      //start activity 1
      }
    else 
      {
        //start activity 2
       }

4 个答案:

答案 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
}