Android

String.equals() with multiple conditions (and one action on result) [duplicate]

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 .

  • Это не приводит к сбою, когда name равно NULL (то же самое с Set).

  • Мне это нравится, потому что выглядит чисто

Ответ 3

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

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

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

java android