我想检查一个句子中是否出现了一堆单词。基本上,我需要一个短语的子字符串功能。除了 Java 子字符串,我还需要检查多个单词之间的子字符串,并确保匹配只包括句子中的连续单词。不用说,如果短语本身是一个词,那么一个词匹配应该可以工作。如果短语多于一个单词,则子字符串应该在句子中进行完全匹配。
例如,给定两个句子“The book was in the other bag”和“换句话说,我无法得出结论”,我需要检查它们中的任何一个是否与短语“in other words”匹配。
您可以使用Contains()
检查这个例子:
http://www.easywayserver.com/blog/java-string-contains-example/
此外,如果您需要忽略大小写,您可以将两个字符串都解析为小写str1.toLowerCase().contains(str2.toLowerCase())
尝试使用该String.contains
方法,请注意这是区分大小写的搜索。
String ex1 = "The book was in the other bag";
String ex2 = "In other words, I could not arrive at a conclusion";
String search = "in other words";
ex1.toUpperCase().contains(search.toUpperCase());
ex2.toUpperCase().contains(search.toUpperCase());
您正在寻找一个正则表达式:
String str1 = "The book was in the other bag";
String str2 = "In other words, I could not arrive at a conclusion";
String phrase = "in other words";
Pattern pattern = Pattern.compile(phrase, Pattern.CASE_INSENSITIVE);
boolean str1containsPhrase = pattern.matcher(str1).find(); // false
boolean str2containsPhrase = pattern.matcher(str2).find(); // true
考虑使用StringUtils 类,它为子字符串检查提供了更大的灵活性,例如相对于其他字符串的子字符串提取(例如substringBefore / substringAfter / substringBetween as containsAny / containsOnly和containsIgnoreCase等)