![](/img/trans.png)
[英]Java Regex : How to return the whole word if the words ends with a specific string
[英]Java- how to parse for words in a string for a specific word
我将如何解析句子“嗨,你好吗?”中的“嗨”这个词。 或解析“你好吗?”中的“如何”?
我想要的代码示例:
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.com/j2se/1.5.0/docs/api/java/lang/String.html
if( s.contains( word ) ) {
// ...
}
if( s.indexOf( word2 ) >=0 ) {
// ...
}
如果您关心单词边界,那么StringTokenizer
可能是一个好方法。
https://docs.oracle.com/javase/1.5.0/docs/api/java/util/StringTokenizer.html
然后,您可以对每个单词执行不区分大小写的检查 (equalsIgnoreCase)。
看起来像正则表达式的工作。 Contains
会给出一个误报,比如"hire-purchase"
。
if (Pattern.match("\\bhi\\b", stringToMatch)) { //...
我会去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"
}
}
或者,查看java.util.regex
并使用正则表达式。
相反,我会选择tokenizer 。 将空格和其他元素(如逗号、句号等)设置为分隔符。 并记住在不区分大小写的模式下进行比较。
通过这种方式,您可以在“嗨,他的测试进展如何”中找到“嗨”,而不会在“hi”上得到假阳性,在“Hi”上得到假阴性(以大写字母 H 开头)。
您可以将正则表达式传递给Scanner
的next()
方法。 因此,您可以遍历输入中的每个单词(默认情况下扫描仪以空格分隔)并在匹配时执行适当的处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.