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 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
