乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      C#過濾敏感詞DFA算法

       印度阿三17 2019-09-08

      今天游戲正好用到需要過濾敏感詞將出現(xiàn)的敏感詞替換成*,在網(wǎng)上找了許久找了一片可用的java版本的DFA算法,最后費(fèi)了一番功夫?qū)⑵渌悸酚肅#實(shí)現(xiàn),里面的注釋甚至都沒改動(dòng)的,這里直接上代碼,這里不借助任何第三方工具,復(fù)制粘貼就是用

      當(dāng)然想看原博客的點(diǎn)擊這里

      
      using UnityEngine;
      using System.Collections.Generic;
      public class Test : MonoBehaviour
      {
          public TextAsset txt;
          private void Start()
          {
              
          }
          private void Update()
          {
              if (Input.GetKeyDown("x")) {
                  string str = "后來的啊微信哈哈嘀嘀嘀微信qqwx呼呼呵呵";
                  HashSet<string> set = ReadTxtByLine(txt);
                  Dictionary<object, object> map = AddBadWordToHashMap(set);
                  string set1 = GetBadWord(str, 2, map);
                  print(set1);
              }
          }
          private HashSet<string> ReadTxtByLine(TextAsset file) {
              //使用換行和回車符分割敏感詞
              string[] str = file.text.Split('\n','\r');
              HashSet<string> setTemp = new HashSet<string>();
              if (str != null) {
                  foreach (string s in str)
                  {
                      setTemp.Add(s);
                  }
              }
              return setTemp;
          }
          private Dictionary<object, object> AddBadWordToHashMap(HashSet<string> keyWordSet)
          {
              //初始化敏感詞容器,減少擴(kuò)容操作
              Dictionary<object, object> wordMap = new Dictionary<object, object>(keyWordSet.Count);
              string key = null;
              Dictionary<object,object> nowMap = null;
              Dictionary<object, object> newWorMap = null;
              //迭代keyWordSet
              foreach (var v in keyWordSet) {
                  key = v;
                  nowMap = wordMap;
                  char[] keyChars = key.ToCharArray();
                  for (int i = 0; i < keyChars.Length; i  ) {
                      //轉(zhuǎn)換成char型
                      char keyChar = keyChars[i];
                      //如果存在該key,直接賦值
                      if (nowMap.ContainsKey(keyChar.ToString())) {
                          nowMap = wordMap;
                      }else{
                          //不存在則,則構(gòu)建一個(gè)map,同時(shí)將isEnd設(shè)置為0,因?yàn)樗皇亲詈笠粋€(gè)
                          newWorMap = new Dictionary<object, object>();
                          //不是最后一個(gè)
                          newWorMap.Add("isEnd", "0");
                          nowMap.Add(keyChar.ToString(), newWorMap);
                          nowMap = newWorMap;
                      }
                      if (i == keyChars.Length - 1){
                          //最后一個(gè)
                          if (nowMap.ContainsKey("isEnd")) {
                              nowMap.Remove("isEnd");
                          }
                          nowMap.Add("isEnd", "1");
                      }
                  }
              }
              return wordMap;
          }
          public string GetBadWord(string txt, int matchType, Dictionary<object, object> wordMap)
          {
              char[] c = txt.ToCharArray();
              for (int i = 0; i < txt.Length; i  )
              {
                  //判斷是否包含敏感字符
                  int length = CheckBadWord(txt, i, matchType, wordMap);
                  if (length > 0)
                  {
                      string oldStr = txt.Substring(i, length);
                      //替換敏感詞
                      for (int j = 0; j < length; j  ) {
                          c[j   i] = '*';
                      }
                      //減1的原因,是因?yàn)閒or會(huì)自增
                      i = i   length - 1;
                  }
              }
              return new string(c);
          }
          private int CheckBadWord(string txt, int beginIndex, int matchType, Dictionary<object, object> wordMap)
          {
              //敏感詞結(jié)束標(biāo)識(shí)位:用于敏感詞只有1位的情況
              bool flag = false;
              //匹配標(biāo)識(shí)數(shù)默認(rèn)為0
              int matchFlag = 0;
              char word = '0';
              object nowMap = wordMap;
              char[] words = txt.ToCharArray();
              for (int i = beginIndex; i < words.Length; i  )
              {
                  word = words[i];
                  //獲取指定key
                  if (((Dictionary<object, object>)nowMap).ContainsKey(word.ToString())) {
                      //存在,則判斷是否為最后一個(gè)
                      //找到相應(yīng)key,匹配標(biāo)識(shí) 1
                      nowMap = ((Dictionary<object, object>)nowMap)[word.ToString()];
                      matchFlag  ;
                      if (((Dictionary<object, object>)nowMap).ContainsKey("isEnd")) {
                          string temp = (string)((Dictionary<object, object>)nowMap)["isEnd"];
                          if ("1".Equals(temp))
                          {
                              //如果為最后一個(gè)匹配規(guī)則,結(jié)束循環(huán),返回匹配標(biāo)識(shí)數(shù)
                              //結(jié)束標(biāo)志位為true
                              flag = true;
                              if (1 == matchType)
                              {
                                  //最小規(guī)則,直接返回,最大規(guī)則還需繼續(xù)查找
                                  break;
                              }
                          }
                      }
                  }
                  else
                  {     //不存在,直接返回
                      break;
                  }
              }
            
              if (!flag)
              {
                  matchFlag = 0;
              }
              return matchFlag;
          }
       
      }

      下面是是敏感詞庫,其實(shí)就是一個(gè).txt文件大家自己創(chuàng)建就行我這內(nèi)容也不多上個(gè)截圖就好

      好了今天就這么多

      來源:https://www./content-1-443701.html

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請遵守用戶 評(píng)論公約

        類似文章 更多