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

Java 与具有空白的字符串的比较,java,string-comparison,Java,String Comparison,对不起,如果这是个愚蠢的问题。我需要和一个名字进行比较,这个名字有三个单词被一个空格隔开。如果名称为空或“这是Android”,我会做一些事情,否则我会做其他事情。例如,下面的代码进行这种比较是否正确 if((name==null)||(name.equalsIgnoreCase("This is Android"))) { //start activity 1 } else { //start activity 2

对不起,如果这是个愚蠢的问题。我需要和一个名字进行比较,这个名字有三个单词被一个空格隔开。如果名称为空或“这是Android”,我会做一些事情,否则我会做其他事情。例如,下面的代码进行这种比较是否正确

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

在执行此操作之前,您应该检查
名称是否为空,否则看起来很好。(除此之外,如果
,则应为
,而不是
如果
):

更新:

在比较字符串时,空格会起作用。所以,“你好世界”和“你好世界”基本上是不相等的

您需要使用
.trim()
方法忽略周围的空白

name = name.trim(); //since strings are immutable you need to assign return value to name
if("This is Android".equalsIgnoreCase(name)) { 
“This is Android”与“This is Android”不同,
equalsIgnoreCase
将返回false。您可以使用
trim()
删除空格和
字符串的开头或结尾


希望这有帮助

始终保持左手边的常量字符串相等,这样可以确保没有NPE:

像这样:

if ("This is Android ".equalsIgnoreCase(str1)) {
    // start activity 1
} else {
    // start activity 2
}
如果不需要空间,请添加
trim()

或者防弹(如果用户在字符串末尾粘贴了不需要的空格)


请提供更多关于“名称”的详细信息,“三个单词被一个空格分隔”如何?对不起,名称已经是字符串了。我编辑了我的问题。谢谢你为什么要用字符串文字?还有,为什么要颠倒顺序?@Miquel:谢谢你的发现。从OP复制时未注意。如果不需要进行空检查,则将其反转。@gurung-除非有必要,否则不需要检查空值。equalsIgnoreCase调用包含了这一点。@ChrisAldrich:这没有任何意义。假设:
name
为空,那么
equalsIgnoreCase
将如何涵盖
name.equalsIgnoreCase
???就是这么简单。我永远不会使用
string!=空字符串.equals(“literal”)
及其变体。这是一个糟糕的做法,甚至不应该被提及。实际上,代码中的“这是Android”。这就是我的意思…再次编辑了我的问题..对不起,输入错误。然后答案是肯定的。比较是可以的。
if ("This is Android ".equalsIgnoreCase(str1)) {
    // start activity 1
} else {
    // start activity 2
}
if ("This is Android ".trim().equalsIgnoreCase(str1)) {
     // start activity 1
} else {
     // start activity 2
}
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
}