Arhsy:
String a = "Hello my name is Sap";
String b = "HelloisSapmyname";
String c = "Sap is my name";
String d = "Sap";
String keyword = "Sap";
cuando uso .contains()
es cierto para todas las cadenas.
¿Cómo lo consiguen cierto para todos los casos excepto B?
Nota: La adición de un espacio antes de la palabra clave no funcionará si la palabra clave si la primera palabra. ¡Por favor ayuda!
EDIT : Añadido todas las condiciones posibles
SOLUCIÓN : Con la ayuda de las otras respuestas que encontré la solución que satisface todas las condiciones
if (a.contains(" "+key+ " ") || a.startsWith(key+" ")
|| a.equals(key) || a.endsWith(" "+key))
Se RegEx ser más rápido que esto?
Khalid Shah:
Se puede utilizar simplemente expresiones regulares. \ B uso de la palabra sitio limítrofe.
Pattern p = Pattern.compile("\\bSap\\b");
String a ="Hello my name is Sap";
Matcher m1 = p.matcher(a);
System.out.println( m1.find());// return true
String b = "HellomynameisSap";
Matcher m2=p.matcher(b);
System.out.println( m2.find());//return false
String c = "Hello Sap my name";
Matcher m3=p.matcher(c);
System.out.println( m3.find());//return true
String d = "Sap";
Matcher m4=p.matcher(d);
System.out.println( m4.find());//return true
Por defecto es entre mayúsculas y minúsculas. si quieres que no se distingan entonces usted tiene que inicializar Pattern
como este.
Pattern p = Pattern.compile("\\bsap\\b",Pattern.CASE_INSENSITIVE);