C# 全角文字を半角文字に変換

全角文字を半角文字に変換するメソッドが用意されてるんだろうなとググってみたら、どうやら Visual C# では用意されてないよう。

@ITの質問掲示板「C#による半角⇔全角変換の方法は?」
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10448&forum=7

↑ ここなんかを見ると、多くの人は Visual Basic のStrConv()を利用しているようす。

Visual Basic のStrConvメソッド使わずに思ったよりもコード量も少なく書けたので覚え書きとして残しておこうと思う。

ちゃちゃっと書いたので、ひょっとするとうまくいかないかも。うまくいかなかったらゴメンナサイ。

処理は簡単

「変換したい文字の変換表を持って、その表に従って順に置き換えていく」てだけ。

「全角スペース→半角スペース」もしたいと思ったら表に追加するだけで対応できる。


Form1


            char[,] table = new char[,]{
                    {'0','0'},{'1','1'},{'2','2'},{'3','3'},{'4','4'},
                    {'5','5'},{'6','6'},{'7','7'},{'8','8'},{'9','9'},
                                
                    {'A','A'},{'B','B'},{'C','C'},{'D','D'},{'E','E'},
                    {'F','F'},{'G','G'},{'H','H'},{'I','I'},{'J','J'},
                    {'K','K'},{'L','L'},{'M','M'},{'N','N'},{'O','O'},
                    {'P','P'},{'Q','Q'},{'R','R'},{'S','S'},{'T','T'},
                    {'U','U'},{'V','V'},{'W','W'},{'X','X'},{'Y','Y'},
                    {'Z','Z'},
                                
                    {'a','a'},{'b','b'},{'c','c'},{'d','d'},{'e','e'},
                    {'f','f'},{'g','g'},{'h','h'},{'i','i'},{'j','j'},
                    {'k','k'},{'l','l'},{'m','m'},{'n','n'},{'o','o'},
                    {'p','p'},{'q','q'},{'r','r'},{'s','s'},{'t','t'},
                    {'u','u'},{'v','v'},{'w','w'},{'x','x'},{'y','y'},
                    {'z','z'}
                    };

            string strTarget = textBox1.Text;

            for (int i = 0; i < table.Length / table.GetLength(1); i++)
            {
                strTarget = strTarget.Replace(table[i, 0], table[i, 1]);
            }

            textBox2.Text = strTarget;

Form1 動作イメージ

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください