Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        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);
        }