この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「TIPS:文字列を全角/半角に変換するには?(VB.NET関数活用)」では、VB用のStrConv関数(Microsoft.VisualBasic名前空間)により、文字列内の全角文字を半角文字に変換する方法を示しているが、このStrConv関数は全角→半角の変換可能な文字をすべて変換してしまう。ここでは、全角カタカナはそのままに、全角英数字のみを半角にする方法について解説する。
ここで紹介するのは、文字列内の特定の文字に対してのみ、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.