本文实例讲述了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#敏感词过滤实现方法相关推荐

  1. c语言程序填空改错题,C语言模拟改错填空编程题.doc

    C语言模拟改错填空编程题.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文 ...

  2. 国二c语言改错题答案,c语言国二考试编程题答案

    <c语言国二考试编程题答案>由会员分享,可在线阅读,更多相关<c语言国二考试编程题答案(65页珍藏版)>请在人人文库网上搜索. 1.1m个人的成绩存放在score数组中,请编写 ...

  3. c语言输入若干数输出最小值循环结构,C语言循环结构程序设计编程题

    <C语言循环结构程序设计编程题>由会员分享,可在线阅读,更多相关<C语言循环结构程序设计编程题(3页珍藏版)>请在人人文库网上搜索. 1.实验3循环结构程序设计.实验目的:1 ...

  4. 面向对象程序设计——Java语言 第3周编程题 查找里程(10分)

    面向对象程序设计--Java语言 第3周编程题 查找里程(10分) 题目内容 下图为国内主要城市之间的公路里程: 你的程序要读入这样的一张表,然后,根据输入的两个城市的名称,给出这两个城市之间的里程. ...

  5. 中科院C语言应聘机试编程题6,中科院计算所保研笔试+机试+面试经验分享

    计算所JDL(先进人机交互)实验室 9月10号开始联系计算所导师,12号收到导师的回复,大致意思是老师让我提供三位本校推荐老师的联系方式,又问了是否有读博的打算,让我准备到计算所JDL面试,16号收到 ...

  6. c语言常考的编程题,C语言操作题常考编程题库

    <C语言操作题常考编程题库>由会员分享,可在线阅读,更多相关<C语言操作题常考编程题库(32页珍藏版)>请在人人文库网上搜索. 1.C语言编程题覆盖到的算法:1.个人所得税计算 ...

  7. 在C语言二级考试中编程题编译,二级C语言上机编程题

    <二级C语言上机编程题>由会员分享,可在线阅读,更多相关<二级C语言上机编程题(34页珍藏版)>请在人人文库网上搜索. 1.二级C语言上机编程题技巧一. 方法总结1. 二级C语 ...

  8. c语言期末考试压轴编程题——猜凶手、猜名词、喝汽水、水仙花数

    目录 C语言大一期末必考压轴编程题 几道C语言初阶学习必考题,尤其最后一道打印水仙花数,C语言期末考试必备大题,不要错过!!! 以下个人思路仅供参考,如有更优算法,欢迎评论! 目录 一.猜凶手 题目: ...

  9. 2022中央财经大学《901C语言程序设计》考研编程题回忆版

    在过去的22考研中,计算机专业内卷严重,像中央财经大学的电子信息学院更加悲惨,成功上岸的分数都在400+ 分享去年考研的两道编程题 1.2000以内的所有全对数,全对数是指一个数X除了它本身意外所有的 ...

  10. Python语言程序设计第二章编程题

    编程题1:获得用户输入的一个整数N,计算并输出N 的32次方 n = int(input("请输入一个整数N:")) result = n**32 print("N的32 ...

最新文章

  1. Hudson神奇的环境变量
  2. ffmpeg 基本用法大全
  3. Java实现pdf和Excel的生成及数据动态插入、导出
  4. C++语言基础(20)-模板的非类型参数
  5. Android Handler、Loop 的简单使用
  6. 口令加密算法 - Java加密与安全
  7. debian 编译linux内核源码,Debian下为本机编译内核模块的方法
  8. Linux——cmake使用示例与整理总结
  9. 我的开发笔记---UIPageControl的详细使用
  10. Kernel那些事儿之内存管理(8) --- Slab(中)
  11. lievent源码分析:evbuffer
  12. mybatis数据输入
  13. Ubuntu环境下Android反编译apk教程
  14. Linux系统学习之兴趣驱动
  15. java 期刊杂志参考_各系列普刊期刊的推荐,大家可供参考
  16. 变量: 赋值 的几种方法
  17. mongodb中文件导入报错error inserting documents解决方法
  18. 读书可以改变命运,知识可以创造奇迹,这放在任何时代都不会过时
  19. 网站建设(1)——域名的类型、选择和购买
  20. js中===和==的区别

热门文章

  1. lopatkin俄大神精简中文系统Windows 8.1 Pro 18655 x86-x64 ZH-CN PIP
  2. matable的作用
  3. 计算机组成原理 唐朔飞 知识点,计算机组成原理知识点总结(唐朔飞版)
  4. 打造高品质Axure组件库,就是这么简单!
  5. 【python编程实例】python程序设计课程
  6. 安装ANSYS19.0的正确方法(附下载)
  7. ps怎么制作流体_PS制作流体效果的字体
  8. dhdas信号测试分析系统软件,基于DHDAS动态信号采集分析系统的折叠舵面模态试验探究...
  9. Windows中字体库的安装方法
  10. 西门子S7-1200控制伺服/步进电机方法与接线(全)