Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Java contains + equals

Estas en el tema de Java contains + equals en el foro de Java en Foros del Web. Buenos días, Me gustaría coger el contains y pasarle un equals, para poder buscar que tenga la palabra que busco + que sea identica. // ...
  #1 (permalink)  
Antiguo 01/03/2014, 05:20
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 7 meses
Puntos: 3
Java contains + equals

Buenos días,

Me gustaría coger el contains y pasarle un equals, para poder buscar que tenga la palabra que busco + que sea identica.

// el ejemplo es inventado y aproximado

String words="hola que tal me llamo xavi";
String words2="hol que tal me llamo xavi";

if(words.contains(words2.split(" ")[0]){
out put (" si ") ;
}

Lo que estaría haciendo es mirar si words contiene lo mismo que words2 en la posición 0 del espacio.

hol == hola (contiene ?) muestro que si !!!! CRASH ERROR (en toería hola contiene hol , pero yo quiero que muestre exacto )

Quiero un equals con el contains, cómo puedo hacerlo ? (tiene que ser con el contains a la fuerza )
  #2 (permalink)  
Antiguo 01/03/2014, 05:43
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Java contains + equals

Creo que es más fácil, si es el espacio el que separa las palabras, añádelo detrás

Código Java:
Ver original
  1. if(words.contains(words2.split(" ")[0]+" "){
  2. out put (" si ") ;
  3. }

Si quieres algo más complejo, puede usar expresiones regulares, así

Código Java:
Ver original
  1. System.out.println("hola que tal me llamo xavi".matches(".*\\bhol\\b.*"));
  2. System.out.println("hola que tal me llamo xavi".matches(".*\\bhola\\b.*"));
  3. System.out.println("hola,que tal me llamo xavi".matches(".*\\bhola\\b.*"));

Debes poner .*\\b delante de la palabra que estés buscando (hol en tu caso) y \\b.* detrás. \\b representa un límite de palabra (espacio, tabulador, coma, punto, fin de linea, inicio de linea, ...) . Los .* representan cualquier número de caracteres, sean los que sean. En resumen, se busca la palabra "hol" o "hola" como palabra completa sin importar su posición.

En esos ejemplos que te he puesto, la primera devuelve false y las otras dos true. Fíjate que en la última he puesto una , en vez de un espacio y aun así funciona.

Si quieres que la palabra buscada esté al principio, en vez de .*\\b delante, pon un ^, así

Código Java:
Ver original
  1. // false
  2. System.out.println("hola que tal me llamo xavi".matches("^hol\\b.*"));
  3.  
  4. // true
  5. System.out.println("hola que tal me llamo xavi".matches("^hola\\b.*"));

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 01/03/2014, 06:18
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: Java contains + equals

Lo solucioné poniéndole un límite

String words = "hol@ "

Etiquetas: string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:39.