//------------------------------------------------------------------------ // pritvate method //------------------------------------------------------------------------ //------------------------------------------------------------------------ // Katakana ---> Korean Roman array (ex. アカネ ---> A,KA,NE ) static private string [] Kana2kRomanArray(string kana) { string [] tempArray; tempArray = new string [kana.Length]; string kRoman = ""; int kcnt = 0; for (int i = 0; i < kana.Length; i++) { if (kana[i] == 'ー') { continue; // 長音は(とりあえず)変換しない } kRoman += kana[i]; if (i == (kana.Length - 1) || !isSmall(kana[i + 1])) { tempArray[kcnt] = kRoman; kcnt++; kRoman = ""; } } string [] kRomanArray = new string [kcnt]; for (int i = 0; i < kcnt; i++) { kRomanArray[i] = ConvTable.K2R(tempArray[i]); } return(kRomanArray); }
//------------------------------------------------------------------------ // Korean Roman Array ---> Japanese Katakana (ex. A,I,DOL ---> アイドル ) // ★未完成である!!注意! static private string kRomanArray2Kana(string [] kRomanArray) { string kana = ""; string rest = ""; // 前文字残り for (int i = 0; i < kRomanArray.Length; i++) { string kRoman = kRomanArray[i]; if (rest != "") { kRoman = rest + kRoman; rest = ""; } // common converting kRoman = ConvertVowel(kRoman); kRoman = kRoman.Replace("L", "R"); // 先頭の文字 if (i == 0) { kRoman = Dull2Resonant_on_Head(kRoman); kRoman = Geki2Hei_on_Head(kRoman); } // 最後の文字 if (i == (kRomanArray.Length - 1)) { // nop } //先頭子音の調整 kRoman = Geki2Hei_on_Head(kRoman); // 激音の平音化 if (kana.EndsWith("ッ")) { // 1つ前の最後が促音なら、この語の先頭は清音化 kRoman = Dull2Resonant_on_Head(kRoman); } // リエゾンの可能性の調査と変換 if (i != (kRomanArray.Length - 1) && // 最後でなくて, isStartsWithVowel(kRomanArray[i + 1])) // 次の語は母音開始 //末尾の子音があれば外す。 // (子音をrestに保存し、次の語の頭につなぐ) { kRoman = RemoveConsonat(kRoman, out rest); } //終端子音の調整 kRoman = ConvertLastConsonat(kRoman); if (kRoman.EndsWith("NG")) { if (i == (kRomanArray.Length - 1)) { // 最後の文字 NG kRoman = kRoman.Replace("NG", "ング"); } else { kRoman = kRoman.Replace("NG", "ン"); } } kana = kana + ConvTable.R2K(kRoman); } // end of for return(kana); }
// Hiragana ---> Hangul (ex. あいどる ---> 아이돌) static public string Hira2Hangul(string hira) { string kana = ConvTable.H2K(hira); // ひらがな→カタカナ return(Kana2Hangul(kana)); }