リンクより、ひらがな・カタカナは「あ」から始まり「ゖ」で終わることが分かる
これを参考に、ひらがなをカタカナに変換したり、カタカナをひらがなに変換するクラスを作成すると以下になる
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()}」");