Unity中使用的一套敏感词过滤方式
当项目中的敏感词数量不是很多的时候,直接用数组来遍历过滤其实也可以,但是具体的数量有多大,这个肯定不好说,因此,对.txt中的敏感词合理组织后再进行过滤就显得非常有必要了。

如上图,左边是txt中配置的敏感词,右边是需要转换为的数据结构(C#中的Dictory来存储即可)
下面那句话是一个示例,即需要过滤敏感词的句子。
具体的实现代码:
using System;
using System.IO;
using System.Collections;
using UnityEngine;
using Common;
using System.Collections.Generic;
using System.Text; public class FilterSensitiveWords
{
static string[] sensitiveWordsArray = null;
static string fileName = "sensitivewords.u";
static string ReplaceValue = "*";
static Dictionary<char, IList<string>> keyDict; public static void Initialize()
{
string path = "txt/sensitivewords.u";
string name = "sensitivewords";
LoadHelp.LoadAssetBundle(path, name, ar =>
{
string content = ar.Bundle.LoadAsset<TextAsset>(name).text;
if (!(content.Equals("") || content.Equals(null)))
{
sensitiveWordsArray = content.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); keyDict = new Dictionary<char, IList<string>>();
foreach (string s in sensitiveWordsArray)
{
if (string.IsNullOrEmpty(s))
continue;
if (keyDict.ContainsKey(s[]))
keyDict[s[]].Add(s.Trim(new char[] { '\r' }));
else
keyDict.Add(s[], new List<string> { s.Trim(new char[] { '\r' }) });
}
}
});
} //判断一个字符串是否包含敏感词,包括含的话将其替换为*
public static bool IsContainSensitiveWords(ref string text, out string SensitiveWords)
{
bool isFind = false;
SensitiveWords = "";
if (null == sensitiveWordsArray || string.IsNullOrEmpty(text))
return isFind; int len = text.Length;
StringBuilder sb = new StringBuilder(len);
bool isOK = true;
for (int i = ; i < len; i++)
{
if (keyDict.ContainsKey(text[i]))
{
foreach (string s in keyDict[text[i]])
{
isOK = true;
int j = i;
foreach (char c in s)
{
if (j >= len || c != text[j++])
{
isOK = false;
break;
}
}
if (isOK)
{
SensitiveWords = s;
isFind = true;
i += s.Length - ;
sb.Append('*', s.Length);
break;
} }
if (!isOK)
sb.Append(text[i]);
}
else
sb.Append(text[i]);
}
if (isFind)
text = sb.ToString(); return isFind;
}
}
Unity中使用的一套敏感词过滤方式的更多相关文章
- java实现敏感词过滤(DFA算法)
小Alan在最近的开发中遇到了敏感词过滤,便去网上查阅了很多敏感词过滤的资料,在这里也和大家分享一下自己的理解. 敏感词过滤应该是不用给大家过多的解释吧?讲白了就是你在项目中输入某些字(比如输入xxo ...
- 用php实现一个敏感词过滤功能
周末空余时间撸了一个敏感词过滤功能,下边记录下实现过程. 敏感词,一方面是你懂的,另一方面是我们自己可能也要过滤一些人身攻击或者广告信息等,具体词库可以google下,有很多. 过滤敏感词,使用简单的 ...
- 浅析敏感词过滤算法(C++)
为了提高查找效率,这里将敏感词用树形结构存储,每个节点有一个map成员,其映射关系为一个string对应一个TreeNode. STL::map是按照operator<比较判断元素是否相同,以及 ...
- Java实现敏感词过滤
敏感词.文字过滤是一个网站必不可少的功能,如何设计一个好的.高效的过滤算法是非常有必要的.前段时间我一个朋友(马上毕业,接触编程不久)要我帮他看一个文字过滤的东西,它说检索效率非常慢.我把它程序拿过来 ...
- 转:鏖战双十一-阿里直播平台面临的技术挑战(webSocket, 敏感词过滤等很不错)
转自:http://www.infoq.com/cn/articles/alibaba-broadcast-platform-technology-challenges 鏖战双十一-阿里直播平台面临的 ...
- java敏感词过滤
敏感词过滤在网站开发必不可少.一般用DFA,这种比较好的算法实现的. 参考链接:http://cmsblogs.com/?p=1031 一个比较好的代码实现: import java.io.IOExc ...
- Java实现敏感词过滤(转)
敏感词.文字过滤是一个网站必不可少的功能,如何设计一个好的.高效的过滤算法是非常有必要的.前段时间我一个朋友(马上毕业,接触编程不久)要我帮他看一个文字过滤的东西,它说检索效率非常慢.我把它程序拿过来 ...
- Jsp敏感词过滤
Jsp敏感词过滤 大部分论坛.网站等,为了方便管理,都进行了关于敏感词的设定. 在多数网站,敏感词一般是指带有敏感政治倾向(或反执政党倾向).暴力倾向.不健康色彩的词或不文明语,也有一些网站根据自身实 ...
- Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类
Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类 =========================== ©Copyright 蕃薯耀 2017年9月25日 http://www ...
随机推荐
- 表单验证——JqueryValidator、BootstrapValidator
表单验证两种方式: 1.JqueryValidator <!DOCTYPE html> <html lang="en"> <head> < ...
- BootStrap同时显示多个Modal解决方案
使用BootStrap自带的Modal的时候,如果同时调用多个Modal,那么只能看到背景颜色加深但是看不见新的Modal页面. 问题主要是Modal的z-index有问题,重新计算z-index并赋 ...
- UVM中的regmodel建模(二)
UVM的寄存器模型,对一个寄存器bit中有两种数值,mirror值,尽可能的反映DUT中寄存器的值.expected值,尽可能的反映用户期望的值. 几种常用的操作: read/write:可以前门访问 ...
- VS2010/MFC编程入门之五十一(图形图像:GDI对象之画刷CBrush)
上一节中鸡啄米主要讲的是画笔CPen的用法,前面也说了,GDI对象中最常用的就是画笔和画刷,本节就讲讲画刷CBrush. 鸡啄米依然是通过实例的方式来说明画刷的用法.此实例要实现的功能是,对话框上有一 ...
- 浏览器css hack
(1)*: IE6+IE7都能识别*,而标准浏览器FF+IE8是不能识别*的; (2)!important: 除IE6不能识别 !important外, FF+IE8+IE7都能识别!import ...
- 好用的firefox浏览器、geckodriver驱动的版本组合(55 和 0.19.1)
试过很多的firefox浏览器版本和geckodriver的组合,有时候好用,有时候不好用,现在确定了一个好用的版本组合,记录一下: firefox:版本55,而且此版本可以用firebug geck ...
- 完美解决Linux服务器tomcat开机自启动问题
经过多次测试终于彻底解决tomcat开机自启动的问题了 PID3=`ps aux | grep /home/server/shichuan/ | grep java | awk '{print $2} ...
- SpringBoot之RESTFul风格的接口调用(jQuery-Ajax)
一.Get $.ajax({ type: "get", url: "url地址", async: true, dataType:"json" ...
- 使用Astah画UML类图经验总结
从学习需求工程与UML开始,就开始接触到Astah这款软件,但是当时完全是为了对UML各种图的了解加深才使用了这款软件.当时画图,都是完全凭借自己想,并没有考虑实际情况,而且画的图都是很简单的,甚至有 ...
- Low-level Native Plugin Interface
http://docs.manew.com/Manual/index.htm https://docs.unity3d.com/Manual/NativePluginInterface.html ht ...