我如何解释句子中的“hi”这个词“嗨,你好吗?” 或解析“你好吗?”中的“如何”一词?
我想要的代码示例:
String word = "hi";
String word2 = "how";
Scanner scan = new Scanner(System.in).useDelimiter("\n");
String s = scan.nextLine();
if(s.equals(word)) {
System.out.println("Hey");
}
if(s.equals(word2)) {
System.out.println("Hey");
}
答案 0 :(得分:7)
要查找子字符串,您可以使用contains
或indexOf
或任何其他变体:
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html
if( s.contains( word ) ) {
// ...
}
if( s.indexOf( word2 ) >=0 ) {
// ...
}
如果你关心单词边界,那么StringTokenizer
可能是一个很好的方法。
http://java.sun.com/j2se/1.4.2/docs/api/java/util/StringTokenizer.html
然后,您可以对每个单词执行不区分大小写的检查(equalsIgnoreCase)。
答案 1 :(得分:5)
看起来像Regular Expressions的工作。 Contains
会对"hire-purchase"
提出误报。
if (Pattern.match("\\bhi\\b", stringToMatch)) { //...
答案 2 :(得分:3)
我会选择java.util.StringTokenizer
:http://java.sun.com/j2se/1.4.2/docs/api/java/util/StringTokenizer.html
StringTokenizer st = new StringTokenizer(
"Hi, how are you?",
",.:?! \t\n\r" //whitespace and puntuation as delimiters
);
while (st.hasMoreTokens()) {
if(st.nextToken().equals("hi")){
//matches "hi"
}
}
或者,请查看java.util.regex
并使用正则表达式。
答案 3 :(得分:0)
我会选择tokenizer。 设置空格和其他元素,如逗号,句号等作为分隔符。记住要在不区分大小写的模式下进行比较。
通过这种方式,您可以在“嗨,他的测试怎么样”中找到“hi”,而不会对“他的”产生误报,并在“Hi”上显示假阴性(以大写字母H开头)。
答案 4 :(得分:0)
您可以将正则表达式传递给Scanner
的next()
方法。因此,您可以遍历输入中的每个单词(默认情况下,扫描程序在空格上分隔),并在获得匹配时执行相应的处理。