String a = "Hello my name is Sap";
String b = "HelloisSapmyname";
String c = "Sap is my name";
String d = "Sap";
String keyword = "Sap";当我使用.contains()时,对所有字符串都是正确的。
除了b之外,所有的情况都是这样吗?
注意:在关键字之前添加空格将无法工作,如果关键字是第一个单词的话。请帮帮忙!
编辑:添加了所有可能的条件
解决方案:在其他答案的帮助下,我找到了满足所有条件的解决方案
if (a.contains(" "+key+ " ") || a.startsWith(key+" ")
|| a.equals(key) || a.endsWith(" "+key))regex会比这个更快吗?
发布于 2018-10-17 09:42:09
您可以简单地使用Regex。B用于词界。
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默认情况下,它是区分大小写的。如果您希望大小写不敏感,那么您必须像这样初始化Pattern。
Pattern p = Pattern.compile("\\bsap\\b",Pattern.CASE_INSENSITIVE);发布于 2018-10-17 09:22:31
您可以将输入String拆分成单词,将其转换为List并在List上运行contains。
Arrays.asList("Hello my name is Sap".split(" ")).contains("Sap")发布于 2018-10-17 09:27:43
试试这个:
if(a.contains(" "+key+" ") || a.startsWith(key) || a.endsWith(key))https://stackoverflow.com/questions/52851361
复制相似问题