首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android中使用.contains()实现关键字的字符串匹配

在Android中使用.contains()实现关键字的字符串匹配
EN

Stack Overflow用户
提问于 2018-10-17 09:19:39
回答 5查看 1.8K关注 0票数 2
代码语言:javascript
复制
String a = "Hello my name is Sap";

String b = "HelloisSapmyname";

String c = "Sap is my name";

String d = "Sap";



String keyword = "Sap";

当我使用.contains()时,对所有字符串都是正确的。

除了b之外,所有的情况都是这样吗?

注意:在关键字之前添加空格将无法工作,如果关键字是第一个单词的话。请帮帮忙!

编辑:添加了所有可能的条件

解决方案:在其他答案的帮助下,我找到了满足所有条件的解决方案

代码语言:javascript
复制
if (a.contains(" "+key+ " ") || a.startsWith(key+" ") 
    || a.equals(key) || a.endsWith(" "+key))

regex会比这个更快吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-10-17 09:42:09

您可以简单地使用Regex。B用于词界。

代码语言:javascript
复制
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

代码语言:javascript
复制
Pattern p = Pattern.compile("\\bsap\\b",Pattern.CASE_INSENSITIVE);
票数 3
EN

Stack Overflow用户

发布于 2018-10-17 09:22:31

您可以将输入String拆分成单词,将其转换为List并在List上运行contains

代码语言:javascript
复制
Arrays.asList("Hello my name is Sap".split(" ")).contains("Sap")
票数 4
EN

Stack Overflow用户

发布于 2018-10-17 09:27:43

试试这个:

代码语言:javascript
复制
if(a.contains(" "+key+" ") || a.startsWith(key) || a.endsWith(key))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52851361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档