c语言敏感词屏蔽编程题,C#敏感词过滤实现方法
本文实例讲述了C#敏感词过滤实现方法。分享给大家供大家参考。具体如下:
这两天突然想到了敏感词过滤 就结合网上找到的资料自己写了一个,脏字数量700+(效率不是很高 测试在110多KB的情况下比replace快 3-4倍)
测试结果图 单位:秒
代码如下:
System.Text.StringBuilder sb = new System.Text.StringBuilder(text.Length);
string filterText = "需要过滤的脏字 以|分开";
//脏字 可根据自己的方式用分隔符
string[] filterData = filterText.Split('|');
foreach (var item in filterData)
{
char value = item[0];
if (dicList.ContainsKey(value))
dicList[value].Add(item);
else
dicList.Add(value, new List() { item });
}
int count = text.Length;
for (int i = 0; i < count; i++)
{
char word = text[i];
if (dicList.ContainsKey(word))//如果在字典表中存在这个key
{
int num = 0;//是否找到匹配的关键字 1找到0未找到
var data = dicList[word].OrderBy(g => g.Length);
//把该key的字典集合按 字符数排序(方便下面从少往多截取字符串查找)
foreach (var wordbook in data)
{
if (i + wordbook.Length <= count)
//如果需截取的字符串的索引小于总长度 则执行截取
{
string result = text.Substring(i, wordbook.Length);
//根据关键字长度往后截取相同的字符数进行比较
if (result == wordbook)
{
num = 1;
sb.Append(GetString(result));
i = i + wordbook.Length - 1;
//比较成功 同时改变i的索引
break;
}
}
}
if (num == 0)
sb.Append(word);
}
else
sb.Append(word);
}
return sb.ToString();
}
///
/// 替换星号
///
///
///
private static string GetString(string value)
{
string starNum = string.Empty;
for (int i = 0; i < value.Length; i++)
{
starNum += "*";
}
return starNum;
}
还有待优化的地方
各位有更好的方法还请分享指点一下,说明原理
希望本文所述对大家的C#程序设计有所帮助。
时间: 2015-05-15
c语言敏感词屏蔽编程题,C#敏感词过滤实现方法相关推荐
- c语言程序填空改错题,C语言模拟改错填空编程题.doc
C语言模拟改错填空编程题.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文 ...
- 国二c语言改错题答案,c语言国二考试编程题答案
<c语言国二考试编程题答案>由会员分享,可在线阅读,更多相关<c语言国二考试编程题答案(65页珍藏版)>请在人人文库网上搜索. 1.1m个人的成绩存放在score数组中,请编写 ...
- c语言输入若干数输出最小值循环结构,C语言循环结构程序设计编程题
<C语言循环结构程序设计编程题>由会员分享,可在线阅读,更多相关<C语言循环结构程序设计编程题(3页珍藏版)>请在人人文库网上搜索. 1.实验3循环结构程序设计.实验目的:1 ...
- 面向对象程序设计——Java语言 第3周编程题 查找里程(10分)
面向对象程序设计--Java语言 第3周编程题 查找里程(10分) 题目内容 下图为国内主要城市之间的公路里程: 你的程序要读入这样的一张表,然后,根据输入的两个城市的名称,给出这两个城市之间的里程. ...
- 中科院C语言应聘机试编程题6,中科院计算所保研笔试+机试+面试经验分享
计算所JDL(先进人机交互)实验室 9月10号开始联系计算所导师,12号收到导师的回复,大致意思是老师让我提供三位本校推荐老师的联系方式,又问了是否有读博的打算,让我准备到计算所JDL面试,16号收到 ...
- c语言常考的编程题,C语言操作题常考编程题库
<C语言操作题常考编程题库>由会员分享,可在线阅读,更多相关<C语言操作题常考编程题库(32页珍藏版)>请在人人文库网上搜索. 1.C语言编程题覆盖到的算法:1.个人所得税计算 ...
- 在C语言二级考试中编程题编译,二级C语言上机编程题
<二级C语言上机编程题>由会员分享,可在线阅读,更多相关<二级C语言上机编程题(34页珍藏版)>请在人人文库网上搜索. 1.二级C语言上机编程题技巧一. 方法总结1. 二级C语 ...
- c语言期末考试压轴编程题——猜凶手、猜名词、喝汽水、水仙花数
目录 C语言大一期末必考压轴编程题 几道C语言初阶学习必考题,尤其最后一道打印水仙花数,C语言期末考试必备大题,不要错过!!! 以下个人思路仅供参考,如有更优算法,欢迎评论! 目录 一.猜凶手 题目: ...
- 2022中央财经大学《901C语言程序设计》考研编程题回忆版
在过去的22考研中,计算机专业内卷严重,像中央财经大学的电子信息学院更加悲惨,成功上岸的分数都在400+ 分享去年考研的两道编程题 1.2000以内的所有全对数,全对数是指一个数X除了它本身意外所有的 ...
- Python语言程序设计第二章编程题
编程题1:获得用户输入的一个整数N,计算并输出N 的32次方 n = int(input("请输入一个整数N:")) result = n**32 print("N的32 ...
最新文章
- Hudson神奇的环境变量
- ffmpeg 基本用法大全
- Java实现pdf和Excel的生成及数据动态插入、导出
- C++语言基础(20)-模板的非类型参数
- Android Handler、Loop 的简单使用
- 口令加密算法 - Java加密与安全
- debian 编译linux内核源码,Debian下为本机编译内核模块的方法
- Linux——cmake使用示例与整理总结
- 我的开发笔记---UIPageControl的详细使用
- Kernel那些事儿之内存管理(8) --- Slab(中)
- lievent源码分析:evbuffer
- mybatis数据输入
- Ubuntu环境下Android反编译apk教程
- Linux系统学习之兴趣驱动
- java 期刊杂志参考_各系列普刊期刊的推荐,大家可供参考
- 变量: 赋值 的几种方法
- mongodb中文件导入报错error inserting documents解决方法
- 读书可以改变命运,知识可以创造奇迹,这放在任何时代都不会过时
- 网站建设(1)——域名的类型、选择和购买
- js中===和==的区别
热门文章
- lopatkin俄大神精简中文系统Windows 8.1 Pro 18655 x86-x64 ZH-CN PIP
- matable的作用
- 计算机组成原理 唐朔飞 知识点,计算机组成原理知识点总结(唐朔飞版)
- 打造高品质Axure组件库,就是这么简单!
- 【python编程实例】python程序设计课程
- 安装ANSYS19.0的正确方法(附下载)
- ps怎么制作流体_PS制作流体效果的字体
- dhdas信号测试分析系统软件,基于DHDAS动态信号采集分析系统的折叠舵面模态试验探究...
- Windows中字体库的安装方法
- 西门子S7-1200控制伺服/步进电机方法与接线(全)