feat;优化替代敏感词的逻辑

This commit is contained in:
xiaocairush
2023-06-18 16:37:35 +08:00
parent 8bcdce311d
commit 6b5e9cd023

View File

@@ -46,8 +46,11 @@ public final class SensitiveWordUtils {
if (StringUtils.isBlank(text)) return text;
List<MatchResult> matchResults = ac_trie.matches(text);
StringBuffer result = new StringBuffer(text);
// matchResults是按照startIndex排序的因此可以通过不断更新endIndex最大值的方式算出尚未被替代部分
int endIndex = 0;
for (MatchResult matchResult : matchResults) {
replaceBetween(result, matchResult.getStartIndex(), matchResult.getEndIndex());
endIndex = Math.max(endIndex, matchResult.getEndIndex());
replaceBetween(result, matchResult.getStartIndex(), endIndex);
}
return result.toString();
}