diff --git a/stream-core/src/main/java/io/github/vampireachao/stream/core/business/highlight/HighlightHelper.java b/stream-core/src/main/java/io/github/vampireachao/stream/core/business/highlight/HighlightHelper.java index 07b20a265f765b817f7f5fc6a8e3e66835899064..614194cf89ba20db14575ad4d4855468d7a7944c 100644 --- a/stream-core/src/main/java/io/github/vampireachao/stream/core/business/highlight/HighlightHelper.java +++ b/stream-core/src/main/java/io/github/vampireachao/stream/core/business/highlight/HighlightHelper.java @@ -50,10 +50,12 @@ public class HighlightHelper { FoundWord last = Objects.requireNonNull(linkedList.pollLast()); // 判断上次和这次的长度,如果上次长度大于这次长度,说明这次词语是上次的一部分 lastIdx -= last.getWord().length(); - if (last.getWord().length() > fondWord.getWord().length()) { - // 直接使用上次的词汇以及重置历史下标 - word = last.getWord(); - } + // 获取要从哪里开始保留 + int index = fondWord.getWord().indexOf(last.getWord().charAt(last.getWord().length() - 1)); + // 这里没有判断是否找到是因为只要进入当前的if语句那么必定有重复串可以找到 + String suffix = fondWord.getWord().substring(index+1); + word = last.getWord() + suffix; + } else { // 否则根据历史下标到当前词汇下标进行查找额外部分 String partOne = text.substring(lastIdx, fondWord.getIndex());