Cadena coincidente de una palabra clave utilizando .contains () en Android

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 Patterncomo este.

Pattern p = Pattern.compile("\\bsap\\b",Pattern.CASE_INSENSITIVE);

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=225282&siteId=1
Recomendado
Clasificación