我有一个名为namePrefixSuffixSet的集合,它具有可能的前缀和后缀信息。例如Jr,Mr.,Mrs.,Attorney General等。
我正在从句子中提取专有名词,并对照此集合检查专有名词,以查看专有名词是否包含前缀或后缀。如果是这样,那么我会将这个专有名词归为一个人。例如John Briggs Jr
我正在提供有关如何执行此操作的代码段。我找不到比赛。
if (namePrefixSuffixList.contains(entry.getKey().toLowerCase())){
Set<String> roleStrings = roleStringsMap.containsKey("PERSON")
? roleStringsMap.get("PERSON") : new HashSet<String>();
roleStrings.add(entry.getKey());
roleStringsMap.put(SemanticRole.PERSON, roleStrings);
continue;
}
在
entry.getKey() = John Briggs Jr
上面的代码中我究竟做错了什么?如果您需要更多信息,请告诉我。
最佳答案
问题是您正在调用列表的contains方法,该方法仅在其中一项完全匹配时才返回true(因此,在您的示例中,如果namePrefixSuffixList包含“ John Briggs Jr”)。
但是,您可以遍历List并对其自身进行Strings包含检查,对于部分匹配,此检查也将返回true(例如,“ John Briggs Jr” .contains(“ Jr”)将返回true):
boolean prefixSuffixFound = false
for ( String prefixSuffix : namePrefixSuffixList ) {
if(entry.getKey().toLowerCase().contains(prefixSuffix) {
prefixSuffixFound = true;
break;
}
}
关于java - 检查字符串中的单词是否包含在集合中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42904352/