Exemplo n.º 1
0
        private List <string> GetFirst(string name)
        {
            List <string> source = PinYinHelper.ZhToPinYinList(name);

            return((from pinyin in source
                    select(from p in pinyin.Split('\'')
                           where p != ""
                           select p).Aggregate("", (string current, string py) => current + py[0].ToString())).ToList());
        }
Exemplo n.º 2
0
 private void SetPinYin(string typeString, List <PinYinSource> pinyinSourceList, ref string error)
 {
     try
     {
         PinYinListAll[typeString] = new List <CacheFirstPinYin>();
         for (int i = 0; i < pinyinSourceList.Count; i++)
         {
             PinYinSource pinYinSource = pinyinSourceList[i];
             string       name         = pinYinSource.Name;
             name = PinYinHelper.GetNumberPinYin(name);
             List <string>    searchList       = PinYinHelper.ZhToPinYinList(name);
             CacheFirstPinYin cacheFirstPinYin = new CacheFirstPinYin();
             cacheFirstPinYin.ID         = pinYinSource.ID;
             cacheFirstPinYin.Name       = pinYinSource.Name;
             cacheFirstPinYin.SearchList = searchList;
             PinYinListAll[typeString].Add(cacheFirstPinYin);
         }
     }
     catch (Exception)
     {
         //LogHelper.WriteCustom("拼音日志", "typestring=" + typeString + "<span style='color:red'>错误:SetPinYin方法错误!count=" + PinYinListAll[typeString].Count + "</span>", 2, ex);
         error = error + "  SetPinYin方法错误!count=" + PinYinListAll[typeString].Count;
     }
 }
Exemplo n.º 3
0
        private List <PinYinResult> GetPinYin(string typeString, string hanziName)
        {
            List <string>       list  = PinYinHelper.ZhToPinYinList(hanziName);
            List <PinYinResult> list2 = new List <PinYinResult>();

            foreach (string item in list)
            {
                for (int j = 0; j < PinYinListAll[typeString].Count; j++)
                {
                    CacheFirstPinYin cacheFirstPinYin;
                    try
                    {
                        cacheFirstPinYin = PinYinListAll[typeString][j];
                    }
                    catch
                    {
                        continue;
                    }
                    if (cacheFirstPinYin != null && cacheFirstPinYin.SearchList != null && cacheFirstPinYin.SearchList.Any((string s) => s == item))
                    {
                        list2.Add(new PinYinResult
                        {
                            ID       = cacheFirstPinYin.ID,
                            Name     = cacheFirstPinYin.Name,
                            Contrast = 35,
                            Debug    = "拼音相等" + 35
                        });
                    }
                }
                string[] nameArray = (from p in item.Split('\'')
                                      where p != ""
                                      select p).ToArray();
                string[] array = nameArray;
                foreach (string i in array)
                {
                    for (int l = 0; l < PinYinListAll[typeString].Count; l++)
                    {
                        CacheFirstPinYin cacheFirstPinYin2;
                        try
                        {
                            cacheFirstPinYin2 = PinYinListAll[typeString][l];
                        }
                        catch
                        {
                            continue;
                        }
                        if (cacheFirstPinYin2 != null && cacheFirstPinYin2.SearchList != null && cacheFirstPinYin2.SearchList.Any((string s) => s.Split('\'').Count((string c) => c == i) == nameArray.Count((string c) => c == i)))
                        {
                            list2.Add(new PinYinResult
                            {
                                ID       = cacheFirstPinYin2.ID,
                                Name     = cacheFirstPinYin2.Name,
                                Contrast = 35,
                                Debug    = "拼音包含字符" + 35
                            });
                            int num = cacheFirstPinYin2.SearchList.Min((string s) => s.IndexOf(i));
                            list2.Add(new PinYinResult
                            {
                                ID       = cacheFirstPinYin2.ID,
                                Name     = cacheFirstPinYin2.Name,
                                Contrast = num * -1,
                                Debug    = "拼音位置" + num * -1
                            });
                            for (int m = 0; m < nameArray.Length - 1; m++)
                            {
                                string lianxu = nameArray[m] + nameArray[m + 1];
                                if (cacheFirstPinYin2.SearchList.Any((string s) => s.Replace("'", "").Contains(lianxu)))
                                {
                                    list2.Add(new PinYinResult
                                    {
                                        ID       = cacheFirstPinYin2.ID,
                                        Name     = cacheFirstPinYin2.Name,
                                        Contrast = 15,
                                        Debug    = "拼音连续" + 15
                                    });
                                }
                            }
                        }
                    }
                }
            }
            return(list2);
        }