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

问题描述 投票:4回答:5

"你好,你好吗?"句子中的 "你好 "或 "你好吗?"中的 "如何 "如何解析?

我想要的代码的例子。

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");
}
java string parsing words
5个回答
7
投票

如果只是查找子串,你可以使用 containsindexOf 或任何其他变体。

http:/java.sun.comj2se1.5.0docsapijavalangString.html。

if( s.contains( word ) ) {
   // ...
}

if( s.indexOf( word2 ) >=0 ) {
   // ...
}

如果你在乎字的界限,那么 StringTokenizer 可能是一个不错的方法。

https:/docs.oracle.comjavase1.5.0docsapijavautilStringTokenizer.html。

然后,你可以对每个单词进行大小写不敏感的检查(equalsIgnoreCase)。


5
投票

看起来像一个工作 正则表达式. Contains 会给一个假阳性,比如说: "hire-purchase".

if (Pattern.match("\\bhi\\b", stringToMatch)) { //...

3
投票

我会去的 java.util.StringTokenizer: http:/java.sun.comj2se1.4.2docsapijavautilStringTokenizer.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 并使用正则表达式。


0
投票

我会选择一个 记号器将空格和其他元素如逗号、句号等设置为定界符。而且记得要在不区分大小写的模式下进行比较。

这样你就可以在 "Hi, how is his test going "中找到 "hi",而不会出现 "his "的假阳性和 "Hi "的假阴性(以大写H开头)。


0
投票

你可以将一个正则表达式传递给 next() 方式 Scanner. 因此,你可以遍历输入中的每一个单词(Scanner默认以空格为界),并在得到匹配的情况下进行适当的处理。

© www.soinside.com 2019 - 2024. All rights reserved.