public Code GetCodeOfString(string str) { var pyCode = pinyinGenerater.GetCodeOfString(str); var pyList = pyCode.GetDefaultCode(); return(new Code(ChaoyinHelper.GetChaoyin(pyList))); }
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); }
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); }
/// <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; } }