Java数据敏感词转换成符号

在某个论坛下用户可以随意留言,为了防止不法分子在网上任意冲浪,需要对一些敏感词汇进行一些校验。在这里使用一个高性能敏感词工具sensitive-word。

详细网址:https://github.com/houbb/sensitive-word?tab=readme-ov-file

maven

<!--     数据脱敏   -->
        <dependency>
            <groupId>com.github.houbb</groupId>
            <artifactId>sensitive-word</artifactId>
            <version>0.13.1</version>
        </dependency>

直接使用

	    String str1 = "我他妈的没有说过脏话";
        String replace1 = SensitiveWordHelper.replace(str1);
        System.out.println("原始数据:" + str1);
        System.out.println("脱敏数据:" + replace1);
// 原始数据:我他妈的没有说过脏话
// 脱敏数据:我***没有说过脏话

结合Spring使用

拓展已脱敏词汇
@Component
public class MyWordDeny implements IWordDeny {

    @Override
    public List<String> deny() {
        return Arrays.asList("卢本伟没有开挂","我的发");
    }
}
拓展排除脱敏词汇
@Component
public class MyWordAllow implements IWordAllow {
    @Override
    public List<String> allow() {
        return Arrays.asList("废物","辣鸡");
    }
}
配置类
@Configuration
public class SpringSensitiveWordConfig {

    /**
     * 排除敏感词
     */
    @Resource
    private MyWordAllow myWordAllow;

    /**
     * 拓展敏感词
     */
    @Resource
    private MyWordDeny myWordDeny;


    /**
     * 初始化引导类
     * WordAllows.chains 在原作者词汇数据库进行拓展
     * WordDenys.chains 同上
     */
    @Bean
    public SensitiveWordBs sensitiveWordBs() {
        return SensitiveWordBs.newInstance()
                .wordAllow(WordAllows.chains(WordAllows.defaults(), myWordAllow))
                .wordDeny(WordDenys.chains(WordDenys.defaults(), myWordDeny))
                .init();
    }
}
测试调用
@SpringBootTest(classes = QpikerAdminApplication.class)
@RunWith(SpringRunner.class)
public class SensitiveTest {

    /**
     * 数据脱敏
     */
    @Resource
    private SpringSensitiveWordConfig springSensitiveWordConfig;

    @Test
    public void wordSensitive(){
        String str = "谁他妈的是废物?,我卢本伟没有开挂真的,1824176666,我的发你是小辣鸡";
        System.out.println("原始数据:" + str);
        String replace = springSensitiveWordConfig.sensitiveWordBs().replace(str);
        System.out.println("脱敏数据:" + replace);
    }
}
输出结果
原始数据:谁他妈的是废物?,我卢本伟没有开挂真的,18241766666,他妈的,我的发你是小辣鸡
脱敏数据:谁***是废物?,我*******真的,***********,***,***你是小辣鸡

'废物' 被加到排除脱敏数据中,结果没被替换
'卢本伟没有开挂' 被加到已脱敏数据中,结果被替换

真没有意说脏话,希望各大网友们构建一个文明网络世界。

04-01 00:38