/// <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()); }
/// <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); }
/// <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()); }
/// <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); } }