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))
正则表达式会比这快吗?
答案 0 :(得分:4)
您可以将输入String
分解为单词,将其转换为List
并在contains
上运行List
:
Arrays.asList("Hello my name is Sap".split(" ")).contains("Sap")
答案 1 :(得分:2)
您可以简单地使用正则表达式。 \ 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);
答案 2 :(得分:0)
尝试一下:
if(a.contains(" "+key+" ") || a.startsWith(key) || a.endsWith(key))
答案 3 :(得分:0)
只需尝试以下
if(Str.startsWith("Sap ") || Str.contains(" Sap")){
<code>
}
答案 4 :(得分:0)
“。contains()”应该有效。
String a = "Hello my name is Sap";
String b = "HelloisSamynamep";
String c = "Sap is my name";
String d = "Sap";
String keyword = "Sap";
System.out.println(a.contains(keyword));
System.out.println(b.contains(keyword));
System.out.println(c.contains(keyword));
System.out.println(d.contains(keyword));
Output -
true
false
true
true
如果我没记错,“。contains()”在内部使用正则表达式。