2012-04-18 4 views

Antwort

88

Möglichkeiten:.

  • Verwendung String.equals():

    if (some_string.equals("john") || 
        some_string.equals("mary") || 
        some_string.equals("peter")) 
    { 
    } 
    
  • einen regulären Ausdruck verwenden:

    if (some_string.matches("john|mary|peter")) 
    { 
    } 
    
  • Shop eine Liste von Strings gegen in einer Sammlung abgestimmt werden und die Sammlung suchen:

    Set<String> names = new HashSet<String>(); 
    names.add("john"); 
    names.add("mary"); 
    names.add("peter"); 
    
    if (names.contains(some_string)) 
    { 
    } 
    
1

Nein, seine Kontrolle wie wenn String "john" OR "mary" OR "peter" OR "etc."

sollten Sie ||

Wie mit überprüfen ,, if(str.equals("john") || str.equals("mary") || str.equals("peter"))

+0

samir sauber aussieht, ist auf ein Pseudo-Code :) – sandalone

2

Ihre aktuelle Implementierung ist richtig . Das vorgeschlagene ist nicht möglich, aber der Pseudocode würde mit mehreren equal() Aufrufen und || implementiert werden.

+0

Dank. Ich habe Pseudonym verwendet, um anzuzeigen, dass es sich nicht um einen Auszug aus meinem Code handelt. – sandalone

4

Halten Sie die zulässigen Werte in einer HashSet und prüfen, ob die Zeichenfolge existiert mit der contains Methode:

Set<String> accept = new HashSet<String>(Arrays.asList(new String[] {"john", "mary", "peter"})); 
if (accept.contains(some_string)) { 
    //... 
} 
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??? 
} 

Verwenden regex vielleicht eine Übereinstimmung zu finden?

Oder erstellen Sie ein Array

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

if(a.contains(stringtomatch)){ 
    //do something 
} 
0

Sie auch eine switch-Anweisung verwenden könnte. z.B.

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

'Ein Wert des Typs String für Quellniveau unter 1,7 kann nicht eingeschaltet werden. Nur konvertierbare int-Werte oder Enum-Konstanten sind erlaubt, da Android Java 1.7 nicht unterstützt. Diese Lösung funktioniert nicht. – WarrenFaith

+0

Was ist, wenn beide Fälle zutreffen? –

21
if (Arrays.asList("John", "Mary", "Peter").contains(name)) { 
} 
  • Dies ist nicht so schnell wie ein vorbereitetes Set verwenden, aber es führt nicht schlechter als ODER verwenden.
  • Dies stürzt nicht ab, wenn der Name NULL ist (gleich mit Set).
  • Ich mag es, weil es
Verwandte Themen