String.equals() с несколькими условиями (и одним действием по результату)

Можно ли сделать что-то подобное в Java для Android (это псевдокод)

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

?

В настоящий момент это выполняется через несколько условий String.equals() с || среди них.

Ответ 1

Возможности:

  • Используйте 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))
    {
    }
    

Ответ 2

if (Arrays.asList("John", "Mary", "Peter").contains(name)) {
}
  • Это не так быстро, как с помощью подготовленного набора, но он работает не хуже, чем с помощью OR.
  • Это не сбой, когда имя NULL (то же, что и для Set).
  • Мне нравится, потому что он выглядит чистым.

Ответ 3

Сохраняйте допустимые значения в HashSet и проверьте, существует ли ваша строка с помощью метода contains:

Set<String> accept = new HashSet<String>(Arrays.asList(new String[] {"john", "mary", "peter"}));
if (accept.contains(some_string)) {
    //...
}

Ответ 4

Ваша текущая реализация верна. Предлагаемый вариант невозможен, но псевдокод будет реализован с несколькими вызовами equal() и ||.

Ответ 5

Нет, его проверка аналогична строке "john" OR "mary" OR "peter" OR "etc."

вы должны проверить с помощью ||

Как и., if(str.equals("john") || str.equals("mary") || str.equals("peter"))

Ответ 6

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
 }

Ответ 7

Вы также можете использовать оператор switch. например.

switch(yourString)
{
     case "john":
          //do something for john
     case "mary":
          //do something for mary
}