C# 屏蔽关键字的实现方法
发布时间:2023-10-10 15:15:50
标签:C#,屏蔽关键字
新建一个txt的文本(代码中读取这个文本文档路径就行,命名随意)
里面的内容一行代表一个,因为我是按行来遍历循环读取要屏蔽的关键字.然后用一个*号来屏蔽一个关键字,
例如: 在论坛中输出"草泥马",涉及到一些比较敏感的话题、名字,在一些推广比较火爆的网站里,都是不允许的,所以这里会只显示"***"。
这里代码下面我给出来了,注释都比较详细..不懂的可以留言问我.希望博友每天能进步一点点..
/// <summary>
/// 屏蔽非法字符串(如果有出现非法字符,那么用"***"来替换)
/// </summary>
/// <param name="strText">要检测的字符串</param>
/// <returns>返还一个健康的字符</returns>
public static string CheckKeyword(string strText)
{
IList<string> list = new List<string>(); //实例化一个数据集
string strpath = System.Web.HttpContext.Current.Server.MapPath("function/keyword.txt"); //获取文本文档路径
int a =strpath.LastIndexOf("IFSns");
int b =strpath.IndexOf("function");
string m = strpath.Substring(a+5, b - a - 6);
string PathTxt = strpath.Replace(m, ""); //获取调用这个方法的相对路径
FileStream fs = new FileStream(PathTxt, FileMode.Open, FileAccess.Read); //打开txt文档,将数据存到文件流中
StreamReader reader = new StreamReader(fs, Encoding.Default); //文件读取
string strLine = reader.ReadLine();
while (strLine!=null&&strLine.Length != 0) //有数据
{
list.Add(strLine.Trim().Replace(" ","")); //如果读取到的数据有空格,则删除空格,并且存到string数据集中
strLine = reader.ReadLine(); //每读取一次,从该行下一行开始继续读取
}
fs.Close(); //关闭文件流
foreach (string str in list) //循环遍历文件流
{
if (strText.Contains(str))
{
int lg = str.Length;
string sg = "";
for (int i = 0; i < lg; i++)
{
sg+="*";
}
strText = strText.Replace(str, sg); //如果含有txt文档中的关键字,则替换为"***"
}
}
return strText;
}


猜你喜欢
- 背景在 Java 中实现线程安全的传统方式是 synchronized 关键字,虽然它提供了一定的同步能力,但它在使用上
- 本文实例为大家分享了Unity实现弧形移动效果的具体代码,供大家参考,具体内容如下一、实现效果二、第一种实现方法——弧形插值using Un
- maven使用过程中无法导入依赖的一些总结作为一名java开发的新手,在学习中难免遇见各种问题,在此总结一下。在使用maven过程中总是碰见
- 我们编程的过程中大部分使用了很出色的ORM框架,例如:MyBatis,Hibernate,SpringJDBC,但是这些都离不开数据驱动JD
- 概述附件,指随同文件发出的有关文件或物品。在PDF文档中,我们可以添加同类型的或其他类型的文档作为附件内容,而PDF中附件也可以分为两种存在
- 本文实例讲述了WinForm实现最小化到系统托盘方法。分享给大家供大家参考。具体分析如下:有个叫NotifyIcon的控件1、建个WinFo
- 本文实例讲述了Java二维数组。分享给大家供大家参考,具体如下:一 点睛1 每行的元素个数不同的二维数组Java定义二维数组更加灵活,允许二
- 本文实例讲述了C#把数组中的某个元素取出来放到第一个位置的实现方法。分享给大家供大家参考。具体分析如下:如何取出数组中符合某种条件的元素,然
- 1. 简介zookeeper是一个开源的分布式协调服务, 提供分布式数据一致性解决方案,分布式应用程序可以实现数据统一配置管理、统一命名服务
- 本文实例为大家分享了java代码统计小程序,供大家参考,具体内容如下可以测试每周你的工作量package rexExp;import jav
- Mybatis and和循环or混用这次项目用到一个and和or混用的场景 , 因为用到多个or(循环), 没想到好的办法最终转换成用 IN
- 最近在做项目的时候有用到对两个集合中的元素进行对比求其交集的情况,因为涉及到的数据量比较大,所以在进行求两个集合中元素交集的时候,就应该考虑
- 本文实例为大家分享了Springboot整合pagehelper分页展示的具体代码,供大家参考,具体内容如下一、添加依赖查找maven中pa
- 记得在 MS Build 2020 大会上,C# 语言开发项目经理 Mads Torgersen 宣称 C# 9.0 将会随着 .NET 5
- 本文实例为大家分享了java实现数字转换人民币中文大写的具体代码,供大家参考,具体内容如下业务场景:1.在人事业务系统开发的报表打印文书时经
- 如:string str1 = "This is a test";string str2 = "This-is
- 简介Quartz是一款功能强大的任务调度器,可以实现较为复杂的调度功能,如每月一号执行、每天凌晨执行、每周五执行等等,还支持分布式调度。本文
- 一、同步容器 1、Vector——>ArrayList vector 是线程(Thread)同步(Synchron
- 1:查看是否有存储卡插入String status=Environment.getExternalStorageState();if(sta
- 背景SpringBoot集成Beetl后如果页面出现异常会将出现异常之前的页面输出到客户端,但是由于页面不完整会导致用户看到的页面错乱或者空