那么如何检查字符串中是否有特定的单词?
所以这是我的代码:
a.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(d.contains("Hey")){
c.setText("OUTPUT: SUCCESS!");
}else{
c.setText("OUTPUT: FAIL!");
}
}
});
Run Code Online (Sandbox Code Playgroud)
我收到了一个错误.
fth*_*ins 44
没有他们说的那么复杂,检查一下你不会后悔.
String sentence = "Check this answer and you can find the keyword with this code";
String search = "keyword";
if ( sentence.toLowerCase().indexOf(search.toLowerCase()) != -1 ) {
System.out.println("I found the keyword");
} else {
System.out.println("not found");
}
Run Code Online (Sandbox Code Playgroud)
您可以toLowerCase()根据需要更改.
.contains() 是完全有效的,是一个很好的检查方式.
(http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#contains(java.lang.CharSequence))
由于你没有发布错误,我猜d是或者你得到的"不能引用在不同方法中定义的内部类中的非最终变量"错误.
要确保它不为null,首先在if语句中检查null.如果是另一个错误,请确保d声明为final或是您班级的成员变量.同上c.
您可以使用正则表达式:
if (d.matches(".*Hey.*")) {
c.setText("OUTPUT: SUCCESS!");
} else {
c.setText("OUTPUT: FAIL!");
}
Run Code Online (Sandbox Code Playgroud)
.* - > 0或更多任何字符
Hey - >你想要的字符串
如果要经常检查这个,最好在Pattern对象中编译正则表达式并重用Pattern实例来进行检查.
private static final Pattern HEYPATTERN = Pattern.compile(".*Hey.*");
[...]
if (HEYPATTERN.matcher(d).matches()) {
c.setText("OUTPUT: SUCCESS!");
} else {
c.setText("OUTPUT: FAIL!");
}
Run Code Online (Sandbox Code Playgroud)
请注意,这也将匹配"Heyburg",例如,因为您没有指定您正在搜索"Hey"作为独立单词.如果您只想匹配Hey单词,则需要将正则表达式更改为 .*\\bHey\\b.*
另一个答案(迄今为止)似乎是检查子字符串而不是单词。主要区别。
在本文的帮助下,我创建了这个简单的方法:
static boolean containsWord(String mainString, String word) {
Pattern pattern = Pattern.compile("\\b" + word + "\\b", Pattern.CASE_INSENSITIVE); // "\\b" represents any word boundary.
Matcher matcher = pattern.matcher(mainString);
return matcher.find();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
135246 次 |
| 最近记录: |