(C#)半角文字列を全角に変換する

半角文字を入力してトラブルが起きたという話を聞いたので、半角文字列を全角に変換するあたりのことをまとめてみる。しかし、半角、全角なんて20世紀の遺物と思っていても、いまだに続いている。みんな全角になってしまえばいいのに。


半角文字列を全角に変換する

.NETフレームワークにはありがたいことに半角文字列を全角に変換するメソッドがあるので、これを使えばすぐに解決。

まず参照の追加で、Microsoft.VisualBasic を追加する。


変換関数は、StrConv というVB6の時代にお世話になった関数名がそのまま使われている。というかVB6時代の関数をC#から使えるようにしてくれているのだろうなあ。

使い方は以下のように。usingに「Microsoft.VisualBasic」と書いた方がよいのかもしれないが、ほとんど使うことのないメソッドなので、その都度、全部書いてしまうことにする。

Microsoft.VisualBasic.Strings.StrConv("ハンカク", Microsoft.VisualBasic.VbStrConv.Wide)

これで「ハンカク」という全角文字列が返ってくる。

半角文字のチェック

文字列の中に半角文字が混じっているのをチェックしたいとする。どうするか。

変換した前と後の文字列を比べて違っていたら半角文字ありだね。ということでチェックしてみる。

コードは以下のように。

            string s0 = this.textBox1.Text;
            string s1 = Microsoft.VisualBasic.Strings.StrConv(s0, Microsoft.VisualBasic.VbStrConv.Wide);

            if (s0 != s1)
            {
                MessageBox.Show("半角文字が混じっています。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                MessageBox.Show("半角文字はありません。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

サンプルアプリもすぐできる。




しかし、NETフレームワークには半角全角の変換メソッドが、VB6互換関数しかないの?という疑問は起きる。CultureInfoあたりにクラスかメッソドが追加されていてもよさそうな気もするが、あまりに日本語ローカルすぎて追加できないのかな。


コメント

このブログの人気の投稿

varchar をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。