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