コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】ひらがな・カタカナの清音と濁音・半濁音の変換を行うクラス

ソースコード

namespace Kogane
{
    /// <summary>
    /// ひらがな・カタカナの清音と濁音・半濁音の変換を行うクラス
    /// </summary>
    public static class DakuonHandakuonUtils
    {
        //================================================================================
        // 関数(static)
        //================================================================================
        /// <summary>
        /// 清音のひらがな・カタカナを濁音に変換して返します
        /// </summary>
        public static string ToDakuon( string seion )
        {
            return seion switch
            {
                "か" => "が",
                "き" => "ぎ",
                "く" => "ぐ",
                "け" => "げ",
                "こ" => "ご",
                "さ" => "ざ",
                "し" => "じ",
                "す" => "ず",
                "せ" => "ぜ",
                "そ" => "ぞ",
                "た" => "だ",
                "ち" => "ぢ",
                "つ" => "づ",
                "て" => "で",
                "と" => "ど",
                "は" => "ば",
                "ひ" => "び",
                "ふ" => "ぶ",
                "へ" => "べ",
                "ほ" => "ぼ",
                "カ" => "ガ",
                "キ" => "ギ",
                "ク" => "グ",
                "ケ" => "ゲ",
                "コ" => "ゴ",
                "サ" => "ザ",
                "シ" => "ジ",
                "ス" => "ズ",
                "セ" => "ゼ",
                "ソ" => "ゾ",
                "タ" => "ダ",
                "チ" => "ヂ",
                "ツ" => "ヅ",
                "テ" => "デ",
                "ト" => "ド",
                "ハ" => "バ",
                "ヒ" => "ビ",
                "フ" => "ブ",
                "ヘ" => "ベ",
                "ホ" => "ボ",
                _   => string.Empty,
            };
        }

        /// <summary>
        /// 清音のひらがな・カタカナを半濁音に変換して返します
        /// </summary>
        public static string ToHandakuon( string seion )
        {
            return seion switch
            {
                "は" => "ぱ",
                "ひ" => "ぴ",
                "ふ" => "ぷ",
                "へ" => "ぺ",
                "ほ" => "ぽ",
                "ハ" => "パ",
                "ヒ" => "ピ",
                "フ" => "プ",
                "ヘ" => "ペ",
                "ホ" => "ポ",
                _   => string.Empty,
            };
        }

        /// <summary>
        /// 濁音・半濁音のひらがな・カタカナを清音に変換して返します
        /// </summary>
        public static string FromDakuonOrHandakuon( string dakuon )
        {
            return dakuon switch
            {
                "が" => "か",
                "ぎ" => "き",
                "ぐ" => "く",
                "げ" => "け",
                "ご" => "こ",
                "ざ" => "さ",
                "じ" => "し",
                "ず" => "す",
                "ぜ" => "せ",
                "ぞ" => "そ",
                "だ" => "た",
                "ぢ" => "ち",
                "づ" => "つ",
                "で" => "て",
                "ど" => "と",
                "ば" => "は",
                "び" => "ひ",
                "ぶ" => "ふ",
                "べ" => "へ",
                "ぼ" => "ほ",
                "ガ" => "カ",
                "ギ" => "キ",
                "グ" => "ク",
                "ゲ" => "ケ",
                "ゴ" => "コ",
                "ザ" => "サ",
                "ジ" => "シ",
                "ズ" => "ス",
                "ゼ" => "セ",
                "ゾ" => "ソ",
                "ダ" => "タ",
                "ヂ" => "チ",
                "ヅ" => "ツ",
                "デ" => "テ",
                "ド" => "ト",
                "バ" => "ハ",
                "ビ" => "ヒ",
                "ブ" => "フ",
                "ベ" => "ヘ",
                "ボ" => "ホ",
                "ぱ" => "は",
                "ぴ" => "ひ",
                "ぷ" => "ふ",
                "ぺ" => "へ",
                "ぽ" => "ほ",
                "パ" => "ハ",
                "ピ" => "ヒ",
                "プ" => "フ",
                "ペ" => "ヘ",
                "ポ" => "ホ",
                _   => string.Empty,
            };
        }
    }
}

使用例

Debug.Log( DakuonHandakuonUtils.ToDakuon( "か" ) );              // が
Debug.Log( DakuonHandakuonUtils.ToHandakuon( "は" ) );           // ぱ
Debug.Log( DakuonHandakuonUtils.FromDakuonOrHandakuon( "が" ) ); // か