Exemple #1
0
        //------------------------------------------------------------------------
        //  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);
        }
Exemple #2
0
        //------------------------------------------------------------------------
        // 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);
        }
Exemple #3
0
        //  Hiragana --->  Hangul   (ex. あいどる ---> 아이돌)
        static public string  Hira2Hangul(string hira)
        {
            string kana = ConvTable.H2K(hira); // ひらがな→カタカナ

            return(Kana2Hangul(kana));
        }