⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chinesewordshashcountset.cs

📁 敏感词过滤系统
💻 CS
字号:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace ChineseWordUnit
{
    //ChineseWordsHashCountSet.cs //词库容器
    /**//// <summary>
    /// 记录字符串出现在中文字典所录中文词语的前端的次数的字典类。如字符串“中”出现在“中国”的前端,则在字典中记录一个次数。
    /// </summary>
    public class ChineseWordsHashCountSet
    {
        /**//// <summary>
        /// 记录字符串在中文词语中出现次数的Hashtable。键为特定的字符串,值为该字符串在中文词语中出现的次数。
        /// </summary>
        private Hashtable _rootTable;

        /**//// <summary>
        /// 类型初始化。
        /// </summary>
        public ChineseWordsHashCountSet()
        {
            _rootTable = new Hashtable();
        }

        /**//// <summary>
        /// 查询指定字符串出现在中文字典所录中文词语的前端的次数。
        /// </summary>
        /// <param name="s">指定字符串</param>
        /// <returns>字符串出现在中文字典所录中文词语的前端的次数。若为-1,表示不出现。</returns>
        public int GetCount(string s)
        {
            if (!this._rootTable.ContainsKey(s.Length))
            {
                return -1;
            }
            Hashtable _tempTable = (Hashtable)this._rootTable[s.Length];
            if (!_tempTable.ContainsKey(s))
            {
                return -1;
            }
            return (int)_tempTable[s];
        }

        /**//// <summary>
        /// 向次数字典中插入一个词语。解析该词语,插入次数字典
        /// </summary>
        /// <param name="s">所处理的字符串。</param>
        //public void InsertWord(string s)
        //{

        //    for (int i = 0; i < s.Length; i++)
        //    {
        //string _s = s.Substring(0, i + 1);
        //        string _s = s.Substring(0, i + 1);
        //        this.InsertSubString(_s);
               
        //    }
        //}

        public void InsertWord(string s)
        {
            for (int i = 0; i < s.Length; i++)
            {
                string _s = s.Substring(0, i + 1);
                if (i == s.Length - 1)
                {
                    this.InsertSubString(_s,true);
                }
                else
                {
                    this.InsertSubString(_s,false);
                }

            }
        }

        /**//// <summary>
        /// 向次数字典中插入一个字符串的次数记录。
        /// </summary>
// <param name="s">所插入的字符串。</param>
        //private void InsertSubString(string s, bool IsWord)
        //{

        //    if (!_rootTable.ContainsKey(s.Length) && s.Length > 0)
        //    {
        //        Hashtable _newHashtable = new Hashtable();
        //        _rootTable.Add(s.Length, _newHashtable);
        //    }
        //    Hashtable _tempTable = (Hashtable)_rootTable[s.Length];

        //    if (!_tempTable.ContainsKey(s))
        //    {
        //        _tempTable.Add(s, 1);
        //    }
        //    else
        //    {
        //        _tempTable[s] = (int)_tempTable[s] + 1;
        //    }
        //}

        private void InsertSubString(string s, bool IsWord)
        {

            if (!_rootTable.ContainsKey(s.Length) && s.Length > 0)
            {
                Hashtable _newHashtable = new Hashtable();
                _rootTable.Add(s.Length, _newHashtable);
            }
            Hashtable _tempTable = (Hashtable)_rootTable[s.Length];

            if (!IsWord)
            {
                if (!_tempTable.ContainsKey(s))
                {
                    _tempTable.Add(s, 0);
                }
                else
                {
                    if ((int)_tempTable[s] != 1)
                    {
                        //_tempTable[s] = (int)_tempTable[s] + 1;
                        _tempTable[s] = 0;
                    }
                    else
                    {
                        _tempTable[s] = 1;
                    }
                }
            }
            else
            {
                if (!_tempTable.ContainsKey(s))
                {
                    _tempTable.Add(s, 1);
                }
                else
                {
                    _tempTable[s] = 1;
                }
            }
        }

    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -