"你好,你好吗?"句子中的 "你好 "或 "你好吗?"中的 "如何 "如何解析?
我想要的代码的例子。
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");
}
如果只是查找子串,你可以使用 contains
或 indexOf
或任何其他变体。
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)。
看起来像一个工作 正则表达式. Contains
会给一个假阳性,比如说: "hire-purchase"
.
if (Pattern.match("\\bhi\\b", stringToMatch)) { //...
我会去的 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
并使用正则表达式。
我会选择一个 记号器将空格和其他元素如逗号、句号等设置为定界符。而且记得要在不区分大小写的模式下进行比较。
这样你就可以在 "Hi, how is his test going "中找到 "hi",而不会出现 "his "的假阳性和 "Hi "的假阴性(以大写H开头)。
你可以将一个正则表达式传递给 next()
方式 Scanner
. 因此,你可以遍历输入中的每一个单词(Scanner默认以空格为界),并在得到匹配的情况下进行适当的处理。