mirror of
https://github.com/houbb/sensitive-word.git
synced 2026-03-22 08:27:36 +08:00
feature: 提供自定义替换策略的api,解决issue#36的问题
This commit is contained in:
@@ -33,16 +33,18 @@ public interface ISensitiveWord {
|
||||
|
||||
/**
|
||||
* 替换所有敏感词内容
|
||||
*
|
||||
* <p>
|
||||
* 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);
|
||||
|
||||
/**
|
||||
* 包含
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -38,10 +38,9 @@ public abstract class AbstractSensitiveWord implements ISensitiveWord {
|
||||
* @return 结果
|
||||
* @since 0.3.2
|
||||
*/
|
||||
protected String doReplace(String target, List<IWordResult> allList, IWordContext context) {
|
||||
protected String doReplace(String target, List<IWordResult> 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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user