我有一个名为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/

10-10 13:48