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 ...
随机推荐
- java commons.lang3 ArrayUtils使用
java commons.lang3 ArrayUtils使用import org.apache.commons.lang3.ArrayUtils; /** *数组追加数组,不重复 */ public ...
- linux环境下安装tomcat6
1)下载apache-tomcat-6.0.10.tar.gz 2)#tar -zxvf apache-tomcat-6.0.10.tar.gz ://解压 3)#cp -R apache-tomca ...
- 分享三个USB抓包软件---Bus Hound,USBlyzer 和-USBTrace(转)
源:分享三个USB抓包软件---Bus Hound,USBlyzer 和-USBTrace Bus Hound官方下载地址:http://perisoft.net/bushound/Bus Hound ...
- MySQL Crash Course #11# Chapter 20. Updating and Deleting Data
INDEX Updating Data The IGNORE Keyword Deleting Data Faster Deletes Guidelines for Updating and Dele ...
- SNMP学习笔记之SNMPWALK 安装与使用详解
0x00 简介 snmpwalk是SNMP的一个工具,它使用SNMP的GETNEXT请求查询指定OID(SNMP协议中的对象标识)入口的所有OID树信息,并显示给用户.通过snmpwalk也可以查看支 ...
- Linux LNMP架构搭建
一.搭建LNMP基本架构 1.L(http) N(nginx) M(mysql) P(php) 2.安装顺序 Mysql-->PHP-->Nginx 3.安装包 Discuz_3. htt ...
- c++的友元类、方法及其益处
在java中,我们知道除了public和private,protected外,还有默认的包可见性访问级别,虽然如此,很多时候出于早期设计缺陷的原因,我们需要访问一些包或者protected可见性级别的 ...
- 关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释
初学STM32,在RealView MDK 环境中使用STM32固件库建立工程时,初学者可能会遇到编译不通过的问题.出现如下警告或错误提示: warning: #223-D: function &qu ...
- android 通过webview调起支付宝app支付
网站学习:http://blog.csdn.net/zhuyu19911016520/article/details/71763900
- SRLTE,SGLTE,SVLTE,CSFB,VoLTE的区别【转】
本文转载自:https://blog.csdn.net/dangbochang/article/details/43851979 SRLTE——Single Radio LTE,俗称单待LTE. SG ...