public Code GetCodeOfString(string str)
        {
            var pyCode = pinyinGenerater.GetCodeOfString(str);
            var pyList = pyCode.GetDefaultCode();

            return(new Code(ChaoyinHelper.GetChaoyin(pyList)));
        }
Пример #2
0
        public override Code GetCodeOfString(string str)
        {
            var code = pinyinGenerater.GetCodeOfString(str);
            IList <IList <string> > codes  = GetErbiCode(str, code.GetDefaultCode());
            IList <string>          result = CollectionHelper.Descartes(codes);

            return(new Code(result, false));
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="str"></param>
        /// <param name="charCodeSplit"></param>
        /// <returns></returns>
        public IList <string> GetCodeOfString(string str, string charCodeSplit = "")
        {
            if (IsPinyinCode && Is1Char1Code)
            {
                return(pinyinGenerater.GetCodeOfString(str, charCodeSplit));
            }
            var list = new List <string>();

            if (Is1Char1Code || str.Length == 1)

            {
                foreach (char c in str)
                {
                    list.Add(GetDefaultCodeOfChar(c));
                }
            }
            else //多个字一个编码
            {
                var result = "";
                var arr    = MutiWordCodeFormat.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                Dictionary <string, string> format = new Dictionary <string, string>();

                foreach (var line in arr)
                {
                    var kv    = line.Split('=');
                    var key   = kv[0].Substring(5);
                    var value = kv[1];

                    format.Add(key, value);
                }
                var k = "e" + str.Length;
                if (format.ContainsKey(k)) //找到对应编码
                {
                    var f = format[k];
                    result = GetStringCode(str, f);
                }
                else //字符串很长

                {
                    var key = "";
                    for (var i = str.Length; i > 0; i--)
                    {
                        key = "a" + i;

                        if (format.ContainsKey(key))
                        {
                            break;
                        }
                    }
                    var f = format[key];
                    result = GetStringCode(str, f);
                }
                list.Add(result);
            }
            return(list);
        }
Пример #4
0
        public IList <string> GetCodeOfWordLibrary(WordLibrary wl, string charCodeSplit = "")
        {
            IList <string> pinYin = null;

            if (wl.CodeType == CodeType.Pinyin)
            {
                pinYin = wl.PinYin;
            }
            else
            {
                //生成拼音
                pinYin = pinyinGenerater.GetCodeOfString(wl.Word);
            }
            var codes = GetErbiCode(wl.Word, pinYin);

            if (codes == null)
            {
                return(null);
            }
            var result = CollectionHelper.Descartes(codes);

            return(result);
        }
Пример #5
0
        /// <summary>
        /// 获得拼音字符串
        /// </summary>
        /// <param name="split">每个拼音之间的分隔符</param>
        /// <param name="buildType">组装拼音字符串的方式</param>
        /// <returns></returns>
        public string GetPinYinString(string split, BuildType buildType)
        {
            var sb = new StringBuilder();
            IList<string> list = null;
            if (PinYin != null)
            {
                list = new List<string>(PinYin);
            }

            if (list == null || list.Count == 0)
            {
                var pyGenerater = new PinyinGenerater();
                list = pyGenerater.GetCodeOfString(word);
            }
            if (list.Count == 0)
            {
                return "";
            }
            foreach (string s in list)
            {
                sb.Append(s + split);
            }
            if (buildType == BuildType.RightContain)
            {
                return sb.ToString();
            }
            if (buildType == BuildType.FullContain)
            {
                return split + sb;
            }
            string str = sb.ToString();
            if (split.Length > 0)
            {
                str = str.Remove(sb.Length - 1);
            }
            if (buildType == BuildType.None)
            {
                return str;
            }
            else //BuildType.LeftContain
            {
                return split + str;
            }
        }