Java-如何解析特定单词的字符串中的单词

时间:2010-02-21 20:16:29

标签: java string parsing words

我如何解释句子中的“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");
}

5 个答案:

答案 0 :(得分:7)

要查找子字符串,您可以使用containsindexOf或任何其他变体:

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.StringTokenizerhttp://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)

您可以将正则表达式传递给Scannernext()方法。因此,您可以遍历输入中的每个单词(默认情况下,扫描程序在空格上分隔),并在获得匹配时执行相应的处理。