全角英数字のみを半角に変換するには?[C#、VB].NET TIPS

» 2010年08月19日 05時00分 公開
[遠藤孝信デジタルアドバンテージ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「.NET TIPS」のインデックス

連載目次

 「TIPS:文字列を全角/半角に変換するには?(VB.NET関数活用)」では、VB用のStrConv関数(Microsoft.VisualBasic名前空間)により、文字列内の全角文字を半角文字に変換する方法を示しているが、このStrConv関数は全角→半角の変換可能な文字をすべて変換してしまう。ここでは、全角カタカナはそのままに、全角英数字のみを半角にする方法について解説する。

Regex.Replaceメソッドによる置き換え

 ここで紹介するのは、文字列内の特定の文字に対してのみ、StrConv関数による処理を行うという方法だ。

 Regexクラス(System.Text.RegularExpressions名前空間)のReplaceメソッドを使えば、指定した正規表現にマッチした部分の文字列を、独自のメソッドによって加工することができる。具体的には、以下のような呼び出し手順になる。

Regex re = new Regex(<正規表現パターン>);
string output = re.Replace(<対象文字列>, <独自メソッド名>);


Dim re As Regex = New Regex(<正規表現パターン>)
Dim output As String = re.Replace( _
                    <対象文字列>, AddressOf <独自メソッド名>)


独自メソッドを利用するReplaceメソッドの呼び出し方法(上:C#、下:VB)


 この場合、<対象文字列>内の一部分が<正規表現パターン>にマッチするたびに、<独自メソッド名>で指定したメソッドが呼び出され、その戻り値により、その部分が置き換えられるというわけだ。

 実際には、<正規表現パターン>に全角英数字を表す正規表現を記述し、<独自メソッド名>で示す独自メソッドでは、StrConv関数により全角→半角変換を行えばよい。以上を実装したものが、次のサンプル・プログラムだ。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。