日本語の文章を扱う際に、カタカナとひらがなの違いを意識することはよくあります。特に、検索機能やテキストの正規化を行う場合、「カタカナ」と「ひらがな」を統一することが重要になります。
例えば、ユーザーが「メール」で検索したとき、「めーる」や「メェル」といった表記揺れがあると検索結果に影響を与える可能性があります。こうした問題を防ぐために、カタカナをひらがなに変換したり、逆にひらがなをカタカナに変換したりする方法を知っておくと便利です。
本記事では、C#を使ってカタカナとひらがなの相互変換を行う方法を解説します。標準ライブラリを活用する方法と、Unicodeを利用したカスタム変換の方法を紹介するので、ぜひ活用してみてください!
カタカナをひらがなに変換する方法
カタカナをひらがなに変換する方法はいくつかありますが、C#では主に以下の方法が考えられます。
KanaConverter
クラスを使用する(.NET 8 以降)- Unicodeを利用して手動で変換する
それぞれの方法について詳しく解説します。
KanaConverter を使用する(.NET 8 以降)
.NET 8
から System.Globalization
名前空間に KanaConverter
クラス が追加され、簡単にカタカナとひらがなの変換ができるようになりました。
using System;
using System.Globalization;
class Program
{
static void Main()
{
string katakana = "コンピュータ";
string hiragana = KanaConverter.ToHiragana(katakana);
Console.WriteLine(hiragana); // こんぴゅーた
}
}
解説
KanaConverter.ToHiragana(string)
を使うことで、カタカナからひらがなへの変換ができます。.NET 8
以上が必要なので、古いバージョンを使用している場合は次の方法を試してください。
Unicodeを利用して主導で変換する
KanaConverter
が使えない環境(.NET 7以前)では、Unicodeを利用してカタカナをひらがなに変換することもできます。
using System;
using System.Text;
class Program
{
static void Main()
{
string katakana = "コンピュータ";
string hiragana = ConvertKatakanaToHiragana(katakana);
Console.WriteLine(hiragana); // こんぴゅーた
}
static string ConvertKatakanaToHiragana(string input)
{
StringBuilder sb = new StringBuilder();
foreach (char c in input)
{
if (c >= 'ァ' && c <= 'ン') // カタカナ範囲
{
sb.Append((char)(c - 'ァ' + 'ぁ')); // ひらがなに変換
}
else
{
sb.Append(c);
}
}
return sb.ToString();
}
}
解説
- カタカナのUnicode範囲(
ァ
= U+30A1 ~ン
= U+30F3)をひらがなの範囲に変換。 - 半角カタカナや濁点・半濁点には対応していないため、注意が必要。
半角カタカナをひらがなに変換する
半角カタカナをひらがなに変換したい場合、まず全角カタカナに変換してから、ひらがなに変換する 方法が使えます。
using System;
using System.Globalization;
class Program
{
static void Main()
{
string hankakuKatakana = "コンピュータ";
string zenkakuKatakana = hankakuKatakana.Normalize(NormalizationForm.FormKC); // 半角→全角
string hiragana = KanaConverter.ToHiragana(zenkakuKatakana);
Console.WriteLine(hiragana); // こんぴゅーた
}
}
解説
Normalize(NormalizationForm.FormKC)
を使うと、半角カタカナを全角カタカナに変換 できる。- その後、
KanaConverter.ToHiragana()
でひらがなに変換。
ひらがなをカタカナに変換する方法
カタカナをひらがなに変換するのと同様に、ひらがなをカタカナに変換する方法もあります。主な方法は以下の2つです。
KanaConverter.ToKatakana()
を使用する(.NET 8 以降)- Unicodeを利用して手動で変換する
KanaConverter を使用する(.NET 8 以降)
.NET 8 から導入された KanaConverter
を使うことで、簡単にひらがなをカタカナに変換できます。
using System;
using System.Globalization;
class Program
{
static void Main()
{
string hiragana = "こんにちは";
string katakana = KanaConverter.ToKatakana(hiragana);
Console.WriteLine(katakana); // コンニチハ
}
}
解説
KanaConverter.ToKatakana(string)
を使うことで、ひらがなをカタカナに変換 できます。.NET 8
以上の環境で利用可能です。
Unicodeを利用して手動で変換する
.NET 8 以前の環境では、Unicodeの文字コードを利用して変換する方法もあります。
using System;
using System.Text;
class Program
{
static void Main()
{
string hiragana = "こんにちは";
string katakana = ConvertHiraganaToKatakana(hiragana);
Console.WriteLine(katakana); // コンニチハ
}
static string ConvertHiraganaToKatakana(string input)
{
StringBuilder sb = new StringBuilder();
foreach (char c in input)
{
if (c >= 'ぁ' && c <= 'ん') // ひらがな範囲
{
sb.Append((char)(c - 'ぁ' + 'ァ')); // カタカナに変換
}
else
{
sb.Append(c);
}
}
return sb.ToString();
}
}
解説
- ひらがなのUnicode範囲(
ぁ
= U+3041 ~ん
= U+3093)をカタカナの範囲に変換。 - 濁点や半濁点が付いた文字(が、ぱ など)はそのまま変換されるため、特別な処理は不要。
ひらがなを半角カタカナに変換する
ひらがなを半角カタカナに変換したい場合は、一度全角カタカナに変換した後、Normalize(NormalizationForm.FormKC)
を利用します。
using System;
using System.Globalization;
class Program
{
static void Main()
{
string hiragana = "こんにちは";
string fullWidthKatakana = KanaConverter.ToKatakana(hiragana);
string halfWidthKatakana = fullWidthKatakana.Normalize(NormalizationForm.FormKC); // 全角→半角
Console.WriteLine(halfWidthKatakana); // コンニチハ
}
}
解説
KanaConverter.ToKatakana()
で全角カタカナに変換。Normalize(NormalizationForm.FormKC)
を使うと、全角カタカナを半角カタカナに変換 できる。
まとめ
カタカナとひらがなの変換について、C#ではいくつかの方法を紹介しました。それぞれの方法にメリットとデメリットがあるので、利用する環境や目的に応じて選択すると良いでしょう。
カタカナをひらがなに変換する方法
KanaConverter.ToHiragana()
を使う方法は、.NET 8 以降の環境であれば簡単で推奨される方法です。- Unicode変換 では、手動でカタカナからひらがなに変換できますが、濁点や半濁点に対応するためには若干の工夫が必要です。
ひらがなをカタカナに変換する方法
- 同じく、
KanaConverter.ToKatakana()
を使うと、ひらがなをカタカナに変換できます。これも .NET 8 以降に対応しているので、最新バージョンの利用をおすすめします。 - Unicodeを利用した手動変換 では、ひらがなをカタカナに変換するシンプルな方法を提供しますが、こちらも濁点や半濁点の変換が含まれています。
半角カタカナへの対応
半角カタカナへの変換については、まず全角に変換してから半角に変換する方法が有効です。これによって、全角と半角のカタカナを意識せずに処理できるようになります。
C#では、バージョンによって利用可能な機能が異なるため、使用している.NETのバージョンに応じて適切な方法を選んでください。標準ライブラリを活用する方法が最も簡便ですが、古いバージョンの場合はUnicodeによる手動変換を使用することができます。
これで、カタカナとひらがなの相互変換ができるようになりました!実際のプロジェクトで役立ててください。
コメント