用idea开发一个基于javaSSM框架编写一个替换敏感字功能,实现一次屏蔽多个内容的敏感字(屏蔽的敏感字存放在txt里面,将敏感字替换成*)

目标:将多个内容的数据屏蔽掉敏感字,一次性返回处理后的多个内容。

分享我的解题思路:
方案1.用String替换的方法,万变不离其中,取出内容出现的关键字,然后用*替换(*这个根据自己的需求定义)(我就是基于这种实现的,下面有具体的过程,不管是插入内容还是查看都能做到,但是目前我们的敏感字屏蔽一般是在显示这块弄屏蔽,都是后端编写代码这块)。

方案二:由于是基于SSM的java开发,可以用过滤器,过滤拦截。(流程大致的用户发送内容封装在一个页面里面,拦截页面的内容,进行敏感字的替换,最后返回用户视图)。

方案一和二比对:两个方案都涉及替换的操作基本没太大的变化,区别就是方案一的内容数据源就是从数据库获取,方案二是从用户提交的界面获取,根据具体需求选择合适的方案,我知道还有很多种解决方法,寻找适合的解决方法就行。

准备:
1.准备一个txt的文件内容。可以根据不同的场景获取需要屏蔽的关键字来源,不局限于从txt获取字库内容,也可以重对应的数据库表获取之类。(虽然内容有点不雅,但是一般屏蔽也正是这些敏感字)
在这里插入图片描述

2.代码知识涉及内容:有String常用功能,动态数组,for读取数据,文件的基本读写操作,数据库一些操作
部分核心代码部分:
public List PostingAllShield() throws IOException {
//文件变量
String line2;
//内容的变量
String str_2 = new String();
//将关键字分割,放入动态数组中
ArrayList str_1 = new ArrayList();
Posting posting3=new Posting();
//存取多个内容对象数组
ArrayListreplyList = new ArrayList();
// 读取txt的文件流,txt目前内容(也就是需要屏蔽的词或者字)
InputStream in=PostingServiceImpl.class.getClassLoader().getResourceAsStream(“a.txt”);
InputStreamReader isr=new InputStreamReader(in,“UTF-8”);
BufferedReader br = new BufferedReader(isr);
//findAll方法读取需要进行屏蔽的内容,这里模拟有多个内容(List),需要自己编写一个
Listposting1=postingMapper.findAllPosting();
//读取文件内容存进动态数组中
while ((line2=br.readLine())!=null) {
System.out.println(line2);
str_1.add(line2);
}
if (posting1 !=null)
{
for (Posting posting2 : posting1) {
System.out.println(“Test_message:” + posting2);
//get取需要进行屏蔽的内容
str_2 = posting2.getContent();
System.out.println(str_2);
//提取String的长度,生成对应
for (String s : str_1) {
System.out.println(s);
ArrayList str_4 = new ArrayList();
for(int i=0;i<s.length();i++){
str_4.add("
");
}
//数组转String
String list_str = StringUtils.join(str_4,"");
//用String的replaceAll进行替换需要屏蔽的词或者字为*
str_2=str_2.replaceAll(s,list_str);
System.out.println(str_2);
}
//把处理的完的内容封装进对象
posting2.setContent(str_2);
//添加多个对象
replyList.add(posting2);
}
}
return replyList;
}
3.测试(不局限怎么编写测试,你只要能验证就行)
数据库的content属性项就是需要进行屏蔽的内容:
在这里插入图片描述
敏感字:
在这里插入图片描述
测试结果:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值