/// <summary> /// 取得指定中文字的注音字根鍵盤碼(標準注音鍵盤)。 /// </summary> /// <param name="aChar"></param> /// <returns></returns> public string[] GetPhoneticKeys(string aChar) { string[] result = new string[0]; // Empty string array. if (!UnicodeHelper.IsCJK(aChar) && !UnicodeHelper.IsBopomofo(aChar)) { return(result); } ChineseCharPhoneticInfo charInfo = null; foreach (Dictionary <string, ChineseCharPhoneticInfo> charList in m_CharListsByFreq) { if (charList.TryGetValue(aChar, out charInfo)) { result = charInfo.Phonetics.ToArray(); break; } } return(result); }
/// <summary> /// 判斷傳入的中文字是否為多音字。 /// </summary> /// <param name="aChar"></param> /// <returns></returns> public bool IsMultiReading(string aChar) { if (!UnicodeHelper.IsCJK(aChar)) { return(false); } ChineseCharPhoneticInfo charInfo = null; for (int i = 0; i < m_CharListsByFreq.Length - 1; i++) { Dictionary <string, ChineseCharPhoneticInfo> charList = m_CharListsByFreq[i]; if (charList.TryGetValue(aChar, out charInfo)) { if (charInfo.IsMultiReading) { return(true); } } } return(false); }
private void Parse(string line) { string[] fields = line.Split(sepChars); if (fields.Length < 3) { return; } ChineseCharPhoneticInfo charInfo = new ChineseCharPhoneticInfo(); charInfo.Character = fields[0]; // 中文字元 charInfo.FreqCode = Convert.ToInt32(fields[1]); // 使用頻率 (0/1/2) for (int i = 2; i < fields.Length; i++) // 注音字根串列 { charInfo.Phonetics.Add(fields[i]); } if (charInfo.FreqCode >= m_CharListsByFreq.Length) // 防錯:修正使用頻率. { charInfo.FreqCode = m_CharListsByFreq.Length - 1; } // 根據使用頻率加入對應的串列. m_CharListsByFreq[charInfo.FreqCode].Add(charInfo.Character, charInfo); }