C#で全角文字と半角文字の変換と、ひらがなとカタカナの変換方法について紹介します。
C#には全角と半角、ひらがなとカタカナを変換するクラス、メソッドは用意されていませんのでVisual Basicのアセンブリを使用して変換します。
目次
Visual Basicのアセンブリを参照する
C#で全角と半角、ひらがなとカタカナの変換を行うために、Visual Basicのアセンブリを参照します。
ソリューション エクスプローラーでアセンブリを追加するプロジェクトのツリーノードを展開します。
展開すると表示されるツリーノードの「参照」を右クリックします。
コンテキストメニューが表示されるので「参照の追加」をクリックします。
「参照マネージャー」ダイアログが表示されますので、左ペインの「アセンブリ」を選択(クリック)し、表示されるアセンブリの一覧から「Microsoft.VisualBasic」を選択(クリック)し「OK」ボタンをクリックします。
アセンブリが参照されると「参照」ノード内に「Microsoft.VisualBasic」が追加されます。
StringsクラスのStrConv静的メソッドで変換
全角と半角の変換、ひらがなとカタカナの変換にはMicrosoft.VisualBasic名前空間にあるStringsクラスのStrConv静的メソッドを使用します。
StrConv静的メソッドには第1引数に変換する文字列を指定し、第2引数に変換方法(変換する形式)を指定します。
変換方法にはMicrosoft.VisualBasic名前空間にあるVbStrConv列挙型のメンバー定数値を指定します。
半角を全角に、全角を半角に変換する
半角を全角に変換するには、VbStrConv列挙型のWideを指定します。
全角を半角に変換するには、VbStrConv列挙型のNarrowを指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// 全角に変換 string zenkaku = Microsoft.VisualBasic.Strings.StrConv( "abc", Microsoft.VisualBasic.VbStrConv.Wide); // 半角に変換 string hankaku = Microsoft.VisualBasic.Strings.StrConv( "xyz", Microsoft.VisualBasic.VbStrConv.Narrow); Console.WriteLine(zenkaku); Console.WriteLine(hankaku); /* abc xyz */ |
カタカナをひらがなに、ひらがなをカタカナに変換する
カタカナをひらがなに変換するには、VbStrConv列挙型のHiraganaを指定します。
ひらがなをカタカナに変換するには、VbStrConv列挙型のKatakanaを指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// ひらがなに変換 string hiragana = Microsoft.VisualBasic.Strings.StrConv( "ヒラガナ", Microsoft.VisualBasic.VbStrConv.Hiragana); // カタカナに変換 string katakana = Microsoft.VisualBasic.Strings.StrConv( "かたかな", Microsoft.VisualBasic.VbStrConv.Katakana); Console.WriteLine(hiragana); Console.WriteLine(katakana); /* ひらがな カタカナ */ |
VbStrConv列挙型のメンバー定数一覧
VbStrConv列挙型のメンバー定数一覧をまとめて掲載しておきます。
名前 | 値 | 説明 |
---|---|---|
None | 0 | 変換は行われません。 |
Uppercase | 1 | 文字列内の小文字を大文字に変換します。 |
Lowercase | 2 | 文字列内の大文字を小文字に変換します。 |
ProperCase | 3 | 文字列内の各単語の最初の文字を大文字に変換します。 |
Wide | 4 | 文字列内の半角文字(横幅の狭い)を、全角文字(横幅の広い文字)に変換します。 アジアのロケールに適用されます。 |
Narrow | 8 | 文字列内の全角文字(横幅の広い文字)を、半角文字(横幅の狭い文字)に変換します。 アジアのロケールに適用されます。 |
Katakana | 16 | 文字列内のひらがな文字をカタカナ文字に変換します。 日本語ロケールのみに適用されます。 |
Hiragana | 32 | 文字列内のカタカナ文字をひらがな文字に変換します。 日本語ロケールのみに適用されます。 |
SimplifiedChinese | 256 | 文字列を簡体中国語に変換します。 |
TraditionalChinese | 512 | 文字列を繁体字中国語に変換します。 |
LinguisticCasing | 1024 | 大文字/小文字についてファイル システム規則に従った文字列を、言語規則に従った文字列に変換します。 |
VbStrConv列挙型のメンバー定数には全角と半角、ひらがなとカタカナ以外の定数も用意されているので、StringsクラスのStrConv静的メソッドを使用して全角と半角、ひらがなとカタカナの他に、大文字と小文字の変換などもできます。
サンプルプログラム
サンプルとしてWindowsフォームアプリケーションを作成して、ひらがなとカタカナの変換、および全角と半角を変換するプログラムを作成します。
ユーザーインターフェース
以下のようなフォームを作成します。
フォームには
- 変換前のテキストボックス
- 変換方法を選択するコンボボックス
(ドロップダウンリストボックス) - 変換を実行するボタン
- 変換後のテキストボックス
を配置します。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
using System; using System.Windows.Forms; using Microsoft.VisualBasic; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); comboBox1.DropDownStyle = ComboBoxStyle.DropDownList; } // フォームロード private void Form1_Load(object sender, EventArgs e) { try { // 変換方法のリストアイテムを設定する SetConversionItems(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } // 変換方法のリストアイテムを設定する private void SetConversionItems() { // VbStrConv列挙型のメンバー定数の名前を取得 string[] items = Enum.GetNames(typeof(VbStrConv)); // コンボボックスのリストアイテムを設定 comboBox1.Items.Clear(); foreach (string item in items) { comboBox1.Items.Add(item); } comboBox1.SelectedIndex = 0; } // 変換する private void button1_Click(object sender, EventArgs e) { try { string conversionText = comboBox1.Text; VbStrConv conversion = (VbStrConv)Enum.Parse(typeof(VbStrConv), conversionText); string unconvertedText = textBox1.Text; string convertedText = Strings.StrConv(unconvertedText, conversion); textBox2.Text = convertedText; } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } |
プロジェクトの実行
プロジェクトを実行します。
「変換前」のテキストボックスに変換するテキストを入力します。
「変換方法」のコンボボックスで「Wide」を選択してボタンをクリックします。
半角文字列が全角文字列に変換されました。
「変換前」のテキストボックスに変換するテキストを入力します。
「変換方法」のコンボボックスで「Narrow」を選択してボタンをクリックします。
「変換前」のテキストボックスに変換するテキストを入力します。
「変換方法」のコンボボックスで「Hiragana」を選択してボタンをクリックします。
「変換前」のテキストボックスに変換するテキストを入力します。
「変換方法」のコンボボックスで「Katakana」を選択してボタンをクリックします。