2012-04-18 12 views

Respuesta

88
Posibilidades:

.

  • Use String.equals():

    if (some_string.equals("john") || 
        some_string.equals("mary") || 
        some_string.equals("peter")) 
    { 
    } 
    
  • utilizar una expresión regular:

    if (some_string.matches("john|mary|peter")) 
    { 
    } 
    
  • tienda una lista de cadenas, que se ajustará en contra de una colección y buscar en la colección:

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

No, su cheque como si la cadena es "john" OR "mary" OR "peter" OR "etc."

debe verificar usando ||

Como ,, if(str.equals("john") || str.equals("mary") || str.equals("peter"))

+0

Samir, hasta es un pseudo código :) – sandalone

2

Su implementación actual es correcta . Lo sugerido no es posible, pero el pseudo código se implementará con múltiples llamadas equal() y ||.

+0

gracias. Utilicé el término pseudo solo para indicar que no es un extracto de mi código – sandalone

4

mantener los valores aceptables en un HashSet y comprobar si existe la cadena utilizando el método de contains:

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??? 
} 

Uso de expresiones regulares para encontrar una coincidencia tal vez?

O crear una matriz

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

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

También puede utilizar una sentencia switch. p.ej.

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

'No se puede activar un valor de tipo Cadena para el nivel de fuente por debajo de 1.7. Solo se permiten los valores int convertibles o las constantes enum ", ya que Android no es compatible con Java 1.7, esta solución no funciona. – WarrenFaith

+0

¿Qué pasa si ambos casos son verdaderos? –

21
if (Arrays.asList("John", "Mary", "Peter").contains(name)) { 
} 
  • Esto no es tan rápido como el uso de un conjunto preparado, pero no es peor que realiza mediante OR.
  • Esto no falla cuando el nombre es NULL (igual que Set).
  • me gusta porque se ve limpio
Cuestiones relacionadas