RegEx.Replaceで、次のような置換を行いたい場合にはどうすればよいでしょうか?
(ケース1)
パターン="\d+"
置換したい文字=パターンにマッチした値を、作成した関数を使って変換した文字列で置換
(例えば、Function Hogehoge(Byval sVal as String) As Stringという関数があるとします。
置換元の文字列が"abc123defg"の場合、マッチするのは"123"になると思うのですが、
"123"の部分をHogehoge("123")で置換したいのです。)
(ケース2)
パターン="\s+(\d+)\s*"
置換したい文字=パターンにマッチした値の()で囲まれた部分を、作成した関数を使って変換した文字列で置換
(例えば、置換元の文字列が"123 4567 bbb"の場合、マッチするのは" 4567 "になると思うのですが、
"4567"の部分をHogehoge("4567")で置換したいのです。)
よろしくお願いします。
VBのバージョンはVB2008 Express Editionです。
申し訳ございません。
Regex.Replace メソッド
http://msdn.microsoft.com/ja-jp/library/system.text.regularexpressions.regex.replace.aspx
のうち、MatchEvaluator を引数に取るものを使用すれば、マッチするごとに任意のメソッド(ただし引数が Match 型一つ、返値が String のもの)が呼び出されます。その中で好きに変換処理を実装できます。
実際の使い方は上記のリンク先のサンプルコードや、MatchEvaluator で WEB 検索したりしてください。
Hongliang様、ありがとうございました。
ケース1については、上記の方法でできそうですので、いろいろとトライしてみます。
ケース2については、ちょうど以下の質問がありましたので、これを応用すればできそうですね。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200906/09060030.txt
ありがとうございました。