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: 这里可以添加优化。
|
* ps: 这里可以添加优化。
|
||||||
*
|
*
|
||||||
* @param target 目标字符串
|
* @param target 目标字符串
|
||||||
* @param context 上下文
|
* @param context 上下文
|
||||||
|
* @param replace 替换策略
|
||||||
* @return 替换后结果
|
* @return 替换后结果
|
||||||
* @since 0.3.2
|
* @since 0.3.2
|
||||||
*/
|
*/
|
||||||
String replace(final String target,
|
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
|
* @since 0.2.0
|
||||||
*/
|
*/
|
||||||
public String replace(final String target) {
|
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 结果
|
* @return 结果
|
||||||
* @since 0.3.2
|
* @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 直接分割
|
// 根据 index 直接分割
|
||||||
|
|
||||||
final IWordReplace replace = context.wordReplace();
|
|
||||||
// 是否需要对 allList 排序?
|
// 是否需要对 allList 排序?
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
|
||||||
@@ -91,7 +90,7 @@ public abstract class AbstractSensitiveWord implements ISensitiveWord {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String replace(String target, IWordContext context) {
|
public String replace(String target, IWordContext context, IWordReplace replace) {
|
||||||
if(StringUtil.isEmpty(target)) {
|
if(StringUtil.isEmpty(target)) {
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
@@ -101,7 +100,7 @@ public abstract class AbstractSensitiveWord implements ISensitiveWord {
|
|||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
|
||||||
return doReplace(target, allList, context);
|
return doReplace(target, allList, context, replace);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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