うにてぃブログ

UnityやUnreal Engineの記事を書いていきます

【C#】ひらがなをカタカナに変換したり、カタカナをひらがなに変換する

リンクより、ひらがな・カタカナは「あ」から始まり「ゖ」で終わることが分かる

これを参考に、ひらがなをカタカナに変換したり、カタカナをひらがなに変換するクラスを作成すると以下になる

using System.Text;
 
public static class StringUtility
{
    private static StringBuilder builder = new StringBuilder();
 
    /// <summary>
    /// カタカナとひらがなの文字コードの差分
    /// </summary>
    private static readonly int offset = beginKatakana - beginHiragana;
    private const char beginHiragana = 'ぁ';
    private const char endHiragana = 'ゖ';
    private const char beginKatakana = 'ァ';
    private const char endKatakana = 'ヶ';
 
    /// <summary>
    /// ひらがなをカタカナに変換
    /// </summary>
    public static string ToKatakana(this string text)
    {
        builder.Clear();
        foreach (var c in text)
        {
            builder.Append(
                beginHiragana <= c && c <= endHiragana ?
                    (char)(c + offset) :
                    c
            );
        }
        return builder.ToString();
    }
 
    /// <summary>
    /// カタカナをひらがなに変換
    /// </summary>
    public static string ToHiragana(this string text)
    {
        builder.Clear();
        foreach (var c in text)
        {
            builder.Append(
                beginKatakana <= c && c <= endKatakana ?
                    (char)(c - offset) :
                    c
            );
        }
        return builder.ToString();
    }
}

実行サンプル

ひらがな・カタカナは相互変換し、それ以外は変換せずそのまま出力されることが確認できる

var hira = "あいうえおゔゕゖ";
Console.WriteLine($"変換前「{hira}」 変換後「{hira.ToKatakana()}」");

var kana = "アイウエオヴヵヶ";
Console.WriteLine($"変換前「{kana}」 変換後「{kana.ToHiragana()}」");

var word = "こんにちは世界";
Console.WriteLine($"変換前「{word}」 変換後「{word.ToKatakana()}」");