开发者

Java- how to parse for words in a string for a specific word

How would I parse for the word "hi" in th开发者_如何学JAVAe sentence "hi, how are you?" or in parse for the word "how" in "how are you?"?

example of what I want in code:

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");
}


To just find the substring, you can use contains or indexOf or any other variant:

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html

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

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

If you care about word boundaries, then StringTokenizer is probably a good approach.

https://docs.oracle.com/javase/1.5.0/docs/api/java/util/StringTokenizer.html

You can then perform a case-insensitive check (equalsIgnoreCase) on each word.


Looks like a job for Regular Expressions. Contains would give a false positive on, say, "hire-purchase".

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


I'd go for the java.util.StringTokenizer: https://docs.oracle.com/javase/1.5.0/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"
     }
 }

Alternatively, take a look at java.util.regex and use regular expressions.


I'd go for a tokenizer, instead. Set space and other elements like commas, full stops etc. as delimiters. And rememeber to compare in case-insensitive mode.

This way you can find "hi" in "Hi, how is his test going" without getting a false positive on "his" and a false negative on "Hi" (starts with a uppercase H).


You can pass a regular expression to the next() method of Scanner. So you can iterate through each word in the input (Scanner delimits on whitespace by default) and perform the appropriate processing if you get a match.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜