Вопрос по java, android – String.equals () с несколькими условиями (и одним действием на результат) [duplicate]

38

This question already has an answer here:

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

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

?

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

Ваш Ответ

7   ответов
36
if (Arrays.asList("John", "Mary", "Peter").contains(name)) {
}
This is not as fast as using a prepared Set, but it performs no worse than using OR. This doesn't crash when name is NULL (same with Set). I like it because it looks clean
118

Use String.equals():

if (some_string.equals("john") ||
    some_string.equals("mary") ||
    some_string.equals("peter"))
{
}

Use a regular expression:

if (some_string.matches("john|mary|peter"))
{
}

Store a list of strings to be matched against in a Collection and search the collection:

Set<String> names = new HashSet<String>();
names.add("john");
names.add("mary");
names.add("peter");

if (names.contains(some_string))
{
}
0

вы также можете использовать оператор switch (см .:Android-кодирование с переключателем (String)). например

switch(yourString)
{
     case "john":
          //do something for john
     case "mary":
          //do something for mary
}
Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enum constants are permittedError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
1

"john" OR "mary" OR "peter" OR "etc."

Вы должны проверить, используя||

Подобно.,,if(str.equals("john") || str.equals("mary") || str.equals("peter"))

Error: User Rate Limit Exceeded sandalone
6

HashSet и проверьте, существует ли ваша строка, используясодержит метод:

Set<String> accept = new HashSet<String>(Arrays.asList(new String[] {"john", "mary", "peter"}));
if (accept.contains(some_string)) {
    //...
}
Error: User Rate Limit Exceeded
2

но псевдокод будет реализован с несколькимиequal() звонки и||.

Error: User Rate Limit Exceeded sandalone
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
 }

Похожие вопросы