VB.NET 正規表現とラムダ式で複雑な置換処理を行う
VB.NET
で正規表現とラムダ式を使った複雑な置換処理を行う方法を紹介します。
置換処理にラムダ式を使用することにより、固定の文言に置換するのではなく、マッチした情報を使用した複雑な置換処理が行なえます。
以下は、文字列の中にURLが含まれている場合はHTML形式のリンクテキストに置換するサンプルです。
'置換対象の文字列
Dim str As String = "置換処理のテスト https://zukucode.com です。"
'URLの文字列にマッチする正規表現
Dim rx As New Regex("https?://(?:[!-~]+\.)+[!-~]+")
str = rx.Replace(str, Function(m)
Dim url As String = m.Value
Return $"<a href='{url}'>{url}</a>"
End Function)
Replace
ファンクションの第2引数にファンクション(ラムダ式)を指定しています。
ラムダ式についてはVB.NET ラムダ式(無名関数)の基本的な使い方で詳しく説明しています。
正規表現にマッチした部分が、ファンクションの引数にセットされ、実行されます。
ファンクションのReturn
値(戻り値)がそれぞれの置換結果となります。
マッチした部分が複数ある場合は複数可ファンクションが実行されます。