gpt4 book ai didi

java - 如何在另一个字符串的末尾找到带有多余单词的不同字符串?

转载 作者:行者123 更新时间:2023-12-01 13:11:04 24 4
gpt4 key购买 nike

我正在尝试根据术语表列表检查java字符串,如果它找到术语表列表中存在的术语,则用标签包装该术语。但问题是,如果我的词汇表列表中有两个术语,例如:“Sprint”和“Sprint 0”则代码仅选择 Sprint 术语,而忽略“Sprint 0”。

这是我的代码

    private String findGlassayTerms(String response, List<Glossary> glossary) {
for (Glossary item : glossary) {
// check if response contains the term
if (StringUtils.contains(response, item.getTerm())) {
System.out.println(item.getTerm());
response = StringUtils.replace(response, item.getTerm(), "<span class=" + item.getTerm() + ">" + item.getTerm() + "</span>");

}
}

return response;
}

这是结果:

<span class=Sprint>Sprint</span> 0 is typically a one or two week period at the end of the Define phase. <br>In summary, <span class=Sprint>Sprint</span> 0 provides an opportunity.

最佳答案

如果您对 List<Glossary> glossary 进行排序根据期限长度(最长期限优先),您当前的代码应该可以正常工作。另一种解决方案是构建所有匹配的列表,然后循环这些匹配以“评分”正确的匹配。接下来,我认为你应该将你的方法重命名为 findGlossaryTerms (而不是 findGlassayTerms )。最后,这种排序(在代码中)可能是这样的 -

Collections.sort(glossary, new Comparator<Glossary>() {
public int compare(Glossary a, Glossary b) {
if (a == null) {
if (b == null) {
return 0;
}
return -1;
} else if (b == null) {
return 1;
}
int av = (a.getTerm() != null) ? a.getTerm().length() : 0;
int bv = (b.getTerm() != null) ? b.getTerm().length() : 0;
return Integer.valueOf(bv).compareTo(av);
}
});

关于java - 如何在另一个字符串的末尾找到带有多余单词的不同字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22866011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com