C#で全角を半角に変換する

C#で、全角文字(2バイト文字)をいわゆる半角文字(1バイト文字)に置換してみました。

目次

  1. Visual BasicのStrConv関数を使う
    1. StrConv関数のメモ
  2. 試してみた
    1. Visual Basicの参照を追加する
    2. 変換プログラムを作る
    3. 変換してみた

Visual BasicのStrConv関数を使う

いわゆる全角文字(1とか)で数字が書かれている文書がたまにあったりして、いわゆる半角文字(1とか)への変換が必要になる場合があります。単純に1文字ずつ変換する方法もありますが、面倒ですのでVisual BasicのStrConv関数を使ってみます。

StrConv関数のメモ

詳しくはMSDNを参照してください。以下はメモです。

引数

引数

内容

第1引数

変換対象の文字列

第2引数

変換のタイプをVbStrConv列挙体で指定する

第3引数

ロケールID(省略可)

VbStrConv列挙体

VbStrConv列挙体のメンバ(抜粋)です。

メンバ

変換のタイプ

UpperCase

大文字に変換する

LowerCase

小文字に変換する

ProperCase

単語の先頭を大文字に変換する

Wide

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

Narrow

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

試してみた

標準入力から文字列を読み取って、変換結果を標準出力に出力する、コンソールアプリを作ってみます。

Visual Basicの参照を追加する

VbStrConvはVisual Basicの関数ですので、まずVisual Basicを参照に追加します。ソリューションエクスプローラーの「参照」を右クリックして、右クリックメニューの中から「参照の追加」を選択します。 151228-2-01 参照マネージャーのウィンドウが開くので、「アセンブリ」→「フレームワーク」の中から「Microsoft.VisualBasic」の項目にチェックを付けて、「OK」します。 151228-2-02 これで、Visual Basicへの参照が追加されます。コードの方にも、下記を記述しておいてください。

using Microsoft.VisualBasic;

変換プログラムを作る

プログラムは、下記のようにしました。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Microsoft.VisualBasic;

namespace strconv_trial
{
    class Program
    {
        static void Main(string[] args)
        {
            TextReader StdIn = Console.In;
            string InputText = StdIn.ReadToEnd();

            string OutputText = Microsoft.VisualBasic.Strings.StrConv(InputText, VbStrConv.Narrow);

            Console.Write(OutputText);
        }
    }
}

標準入力から入力するためにTextReaderを使用します。そのため、usingにSystem.IOを追加します。また、StrConvを使用するためにusingにMicrosoft.VisualBasicも追加します。 変換部分のプログラムは、とても単純ですね。

変換してみた

変換内容は下記のテキストにしてみました。これをtext.txtという名前で保存します。

0123456789
ABCDEFGHRJKLMNOPQRSTUVWXYZ
+-*/¥?@,.
あいうえお
アイウエオ
壱弐参四伍

プロジェクトをビルドして試してみると、下図の様になります。typeというコマンドは、ファイルの中身を標準出力に出力するコマンドです。パイプを使ってビルドしたコンソールアプリにデータを流し込んでます。 151228-2-03 数字、英字、記号が、いわゆる半角文字に変換されました。

公開日

広告