63

是否有可能在 Java for Android 中做这样的事情(这是一个伪代码)

IF (some_string.equals("john" OR "mary" OR "peter" OR "etc."){
   THEN do something
}

?

目前,这是通过其中的多个String.equals()条件完成||的。

4

7 回答 7

166

可能性:

  • 使用String.equals()

    if (some_string.equals("john") ||
        some_string.equals("mary") ||
        some_string.equals("peter"))
    {
    }
    
  • 使用正则表达式:

    if (some_string.matches("john|mary|peter"))
    {
    }
    
  • 在集合中存储要匹配的字符串列表并搜索集合:

    Set<String> names = new HashSet<String>();
    names.add("john");
    names.add("mary");
    names.add("peter");
    
    if (names.contains(some_string))
    {
    }
    
于 2012-04-18T11:07:31.510 回答
59
if (Arrays.asList("John", "Mary", "Peter").contains(name)) {
}
  • 这不如使用准备好的 Set 快,但它的性能并不比使用 OR 差。
  • 当名称为 NULL(与 Set 相同)时,这不会崩溃。
  • 我喜欢它,因为它看起来很干净
于 2014-01-08T21:10:11.690 回答
8

将可接受的值保留在 a 中,并使用contains方法HashSet检查您的字符串是否存在:

Set<String> accept = new HashSet<String>(Arrays.asList(new String[] {"john", "mary", "peter"}));
if (accept.contains(some_string)) {
    //...
}
于 2012-04-18T11:09:53.427 回答
3

您当前的实现是正确的。建议是不可能的,但伪代码将通过多次equal()调用和||.

于 2012-04-18T11:07:42.177 回答
1

如果您为 Android KitKat 或更新版本进行开发,您还可以使用 switch 语句(请参阅:使用 switch (String) 进行 Android 编码)。例如

switch(yourString)
{
     case "john":
          //do something for john
     case "mary":
          //do something for mary
}
于 2012-04-18T11:13:16.790 回答
0
Pattern p = Pattern.compile("tom"); //the regular-expression pattern
Matcher m = p.matcher("(bob)(tom)(harry)"); //The data to find matches with

while (m.find()) {
    //do something???
}   

使用正则表达式来查找匹配可能吗?

或者创建一个数组

 String[] a = new String[]{
        "tom",
        "bob",
        "harry"
 };

 if(a.contains(stringtomatch)){
     //do something
 }
于 2012-04-18T11:11:52.900 回答
0

不,它检查字符串是否为"john" OR "mary" OR "peter" OR "etc."

你应该检查使用||

喜欢。,,if(str.equals("john") || str.equals("mary") || str.equals("peter"))

于 2012-04-18T11:07:05.720 回答