use*_*197 33 java pattern-matching
我是编程和处理函数的新手,如果句子中出现一个单词,则返回true.我尝试了这种indexOf()
方法,但后来我也遇到了这种方法的某个问题:
假设我的判决是 I am a, Java Programmer.
如果我们看一下这个词ram
用的indexOf()
方法,那么它将返回true
因为ram
存在Programmer
而应该是正确的输出false
为ram
不存在的词,但作为一种模式.
我该如何解决这个问题?我现在使用的代码是:
boolean isPresent(String word, String sentence)
{
if(sentence.indexOf(word) >= 0)
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
注意:这个词ram
只是一个例子来说明我当前的方法存在的问题之一.并不是我必须一直ram
只能处理.这个词可以是任何类似的a
,在上面的句子后面跟着一个逗号.
更新:感谢大家提供他们的意见和解决方案.我选择了一个作为一个被接受的答案(如果允许,会选择更多:-)),但很多都是有帮助的.
Evg*_*eev 39
尝试正则表达式
boolean contains = s.matches(".*\\bram\\b.*");
Run Code Online (Sandbox Code Playgroud)
\ b表示单词边界
Zah*_*med 21
由于您要搜索单词,因此有三种情况:
为了涵盖所有这三种情况,一种可能的解决方案是:
String str = "I am a JAVA programmer";
String[] splited = str.split("\\b+"); //split on word boundries
Arrays.asList(splited).contains("ram"); //search array for word
Run Code Online (Sandbox Code Playgroud)
Rik*_*yay 10
你怎么定义一个单词?
由一些其他字符分隔的一堆字符.第二组字符由您选择的内容定义.假设你选择这些. ,?;
.所以,如果你拆分这些字符(称为输入字符串分隔符),你会得到一串字符串这是词.现在,要查找输入是否包含单词,请遍历这些字符串以检查它们是否与您的查询匹配.
boolean isPresent(String query, String s) {
String [] deli = s.split("[.\\s,?;]+");
for(int i=0;i<deli.length;i++)
if(query.equals(deli[i]))
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud)
如果你想要一个单词被定义为由字母,数字和下划线组成的任何单词,那么有一个正则表达式可供你使用:\W+
.
String [] deli = s.split("\\W+");
Run Code Online (Sandbox Code Playgroud)
如果您想了解有关Java Regex的更多信息,请考虑阅读本文.
归档时间: |
|
查看次数: |
73283 次 |
最近记录: |