Пример #1
0
        /// <summary>
        /// 把輸入字串轉換成注音字根陣列。
        /// </summary>
        /// <param name="input">一個或一串中文字。</param>
        /// <returns>字串陣列。每個元素是一個中文字的注音字根,長度固定為 4,例如:"ㄅ ㄢ "。</returns>
        public string[] Convert(string input)
        {
            const int MaxPhraseLength = 10;

            var result = new List <string>();

            GetZhuyinFromDictionary(input, result, MaxPhraseLength);

            if (result.Count == 0) // 防錯:萬一找不到任何注音字根,還是要返回一個符合字串長度的陣列。
            {
                for (int i = 0; i < input.Length; i++)
                {
                    result.Add(string.Empty);
                }
            }

            if (AutoFillSpaces)
            {
                for (int i = 0; i < result.Count; i++)
                {
                    result[i] = Zhuyin.FillSpaces(result[i]);
                }
            }

            return(result.ToArray());
        }
Пример #2
0
        /// <summary>
        /// 取得整串中文字的注音碼。
        /// </summary>
        /// <param name="aChineseText">中文字串。</param>
        /// <returns>字串陣列。每個元素是一個中文字的注音字根,長度固定為 4,例如:"ㄅ ㄢ "。</returns>
        public string[] GetZhuyin(string aChineseText)
        {
            string[] zhuyinArray = _converter.Convert(aChineseText);

            // 調整注音碼,使其長度補滿四個字元.
            for (int i = 0; i < zhuyinArray.Length; i++)
            {
                zhuyinArray[i] = Zhuyin.FillSpaces(zhuyinArray[i]);
            }

            return(zhuyinArray);
        }
Пример #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="input">一個或一串中文字。</param>
        /// <returns>字串陣列。每個元素是一個中文字的注音字根,長度固定為 4,例如:"ㄅ ㄢ "。</returns>
        public string[] Convert(string input)
        {
            const int MaxPhraseLength = 10;

            var result = new List <string>();

            GetZhuyinFromDictionary(input, result, MaxPhraseLength);

            if (AutoFillSpaces)
            {
                for (int i = 0; i < result.Count; i++)
                {
                    result[i] = Zhuyin.FillSpaces(result[i]);
                }
            }

            return(result.ToArray());
        }
Пример #4
0
        /// <summary>
        /// 剖析傳入的注音字根,並建立成 Zhuyin 物件傳回。
        /// </summary>
        /// <param name="zhuyinStr">代表某個中文字的注音符號,共四個字符,最後一個是音調符號。可包含全型空白。</param>
        /// <returns></returns>
        private void Parse(string zhuyinStr)
        {
            string s = Zhuyin.FillSpaces(zhuyinStr);

            if (s.Trim().Length < 1)
            {
                throw new Exception("指定的注音符號為空字串!");
            }

            m_Symbols[0] = s[0];
            m_Symbols[1] = s[1];
            m_Symbols[2] = s[2];

            // 取出音調
            Tone = ZhuyinTone.Tone1;  // 預設為一聲
            switch (s[3])
            {
            case 'ˊ':
                Tone = ZhuyinTone.Tone2;
                break;

            case 'ˇ':
                Tone = ZhuyinTone.Tone3;
                break;

            case 'ˋ':
                Tone = ZhuyinTone.Tone4;
                break;

            case Tone0Char:
                Tone = ZhuyinTone.Tone0;
                break;

            default:
                break;
            }

            if (!Validate())
            {
                throw new Exception("無效的注音符號: " + zhuyinStr);
            }
        }