diff --git a/src/main/java/com/github/houbb/sensitive/word/api/ISensitiveWord.java b/src/main/java/com/github/houbb/sensitive/word/api/ISensitiveWord.java index c3de23d..fe921a4 100644 --- a/src/main/java/com/github/houbb/sensitive/word/api/ISensitiveWord.java +++ b/src/main/java/com/github/houbb/sensitive/word/api/ISensitiveWord.java @@ -33,16 +33,18 @@ public interface ISensitiveWord { /** * 替换所有敏感词内容 - * + *

* ps: 这里可以添加优化。 * - * @param target 目标字符串 + * @param target 目标字符串 * @param context 上下文 + * @param replace 替换策略 * @return 替换后结果 * @since 0.3.2 */ String replace(final String target, - final IWordContext context); + final IWordContext context, + final IWordReplace replace); /** * 包含 diff --git a/src/main/java/com/github/houbb/sensitive/word/bs/SensitiveWordBs.java b/src/main/java/com/github/houbb/sensitive/word/bs/SensitiveWordBs.java index 31441f3..a9afa35 100644 --- a/src/main/java/com/github/houbb/sensitive/word/bs/SensitiveWordBs.java +++ b/src/main/java/com/github/houbb/sensitive/word/bs/SensitiveWordBs.java @@ -592,7 +592,10 @@ public class SensitiveWordBs implements ISensitiveWordDestroy { * @since 0.2.0 */ public String replace(final String target) { - return sensitiveWord.replace(target, context); + return this.replace(target,context.wordReplace()); + } + public String replace(final String target, IWordReplace replace) { + return sensitiveWord.replace(target, context, replace); } /** diff --git a/src/main/java/com/github/houbb/sensitive/word/core/AbstractSensitiveWord.java b/src/main/java/com/github/houbb/sensitive/word/core/AbstractSensitiveWord.java index 7648300..28c8866 100644 --- a/src/main/java/com/github/houbb/sensitive/word/core/AbstractSensitiveWord.java +++ b/src/main/java/com/github/houbb/sensitive/word/core/AbstractSensitiveWord.java @@ -38,10 +38,9 @@ public abstract class AbstractSensitiveWord implements ISensitiveWord { * @return 结果 * @since 0.3.2 */ - protected String doReplace(String target, List allList, IWordContext context) { + protected String doReplace(String target, List allList, IWordContext context, IWordReplace replace) { // 根据 index 直接分割 - final IWordReplace replace = context.wordReplace(); // 是否需要对 allList 排序? StringBuilder stringBuilder = new StringBuilder(); @@ -91,7 +90,7 @@ public abstract class AbstractSensitiveWord implements ISensitiveWord { } @Override - public String replace(String target, IWordContext context) { + public String replace(String target, IWordContext context, IWordReplace replace) { if(StringUtil.isEmpty(target)) { return target; } @@ -101,7 +100,7 @@ public abstract class AbstractSensitiveWord implements ISensitiveWord { return target; } - return doReplace(target, allList, context); + return doReplace(target, allList, context, replace); } @Override diff --git a/src/test/java/com/github/houbb/sensitive/word/bs/SensitiveWordBsReplaceTest.java b/src/test/java/com/github/houbb/sensitive/word/bs/SensitiveWordBsReplaceTest.java new file mode 100644 index 0000000..30ccdc9 --- /dev/null +++ b/src/test/java/com/github/houbb/sensitive/word/bs/SensitiveWordBsReplaceTest.java @@ -0,0 +1,20 @@ +package com.github.houbb.sensitive.word.bs; + +import com.github.houbb.sensitive.word.api.IWordReplace; +import com.github.houbb.sensitive.word.replace.MyWordReplace; +import org.junit.Assert; +import org.junit.Test; + +public class SensitiveWordBsReplaceTest { + + @Test + public void defineReplaceTest() { + final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。"; + SensitiveWordBs sensitiveWordBs = SensitiveWordBs.newInstance().init(); + + IWordReplace replace = new MyWordReplace(); + String result = sensitiveWordBs.replace(text, replace); + + Assert.assertEquals("国家旗帜迎风飘扬,教员的画像屹立在***前。", result); + } +}