src/DotNetCommon.PinYin/PinyinMatch.cs

(开头部分) 11KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using DotNetCommon.PinYin.Internals;

namespace DotNetCommon.PinYin
{
    /// <summary>
    /// 拼音匹配, 不支持[0x20000-0x2B81D]
    /// </summary>
    internal class PinyinMatch : BasePinyinMatch
    {
        private string[] _keywords;
        private string[] _keywordsFirstPinyin;
        private string[][] _keywordsPinyin;
        private int[] _indexs;

        #region SetKeywords
        /// <summary>
        /// 设置关键字,注:索引会被清空
        /// </summary>
        /// <param name="keywords"></param>
        public void SetKeywords(ICollection<string> keywords)
        {
            _keywords = keywords.ToArray();
            _keywordsFirstPinyin = new string[_keywords.Length];
            _keywordsPinyin = new string[_keywords.Length][];
            for (int i = 0; i < _keywords.Length; i++)
            {
                var text = _keywords[i];
                var pys = PinyinDict.GetPinyinList(text);
                string fpy = "";
                for (int j = 0; j < pys.Length; j++)
                {
                    pys[j] = pys[j].ToUpper();
                    fpy += pys[j][0];
                }
                _keywordsPinyin[i] = pys;
                _keywordsFirstPinyin[i] = fpy;
            }
            _indexs = null;
        }

        /// <summary>
        /// 设置关键字,注:索引会被清空
        /// </summary>
        /// <param name="keywords"></param>
        /// <param name="pinyin"></param>
        /// <param name="splitChar"></param>
        public void SetKeywords(IList<string> keywords, IList<string> pinyin, char splitChar = ',')
        {
            _keywords = keywords.ToArray();
            _keywordsFirstPinyin = new string[_keywords.Length];
            _keywordsPinyin = new string[_keywords.Length][];
            for (int i = 0; i < _keywords.Length; i++)
            {
                var text = pinyin[i];
                var pys = text.Split(splitChar);
                string fpy = "";
后面还有 308 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。