文字列の一部を置き換えるためにregex.Replaceを使用しているときに問題が発生します。基本的な考え方は、文字列の先頭をキャプチャしてから、文字列の末尾をコードの値に置き換えることです。たとえば、「テスト番号」の後に番号が続く文字列があり、その番号をインクリメントしたいとします。「テスト番号」をキャプチャしますが、そのキャプチャを新しい番号と連結しようとすると、キャプチャ($ 1)がリテラルとして扱われ、文字列全体が$1[新しい番号]に置き換えられます。
Dim s as String = "We are on Test Number 1"
Dim newNumber as Integer = 2
s=Regex.Replace(s,"(Test Number )(\d)","$1" & newNumber)
これにより、「$12です」と出力されます。ただし、置換でリテラルを使用すると、問題は発生しません。
Dim s as String = "We are on Test Number 1"
s=Regex.Replace(s,"(Test Number )(\d)","$1" & "2")
これにより、期待どおりに「テスト番号2にいます」と出力されます。
キャプチャされたグループを含めるときに、Regex.Replaceの置換文字列部分で変数を使用する方法について誰かが考えていますか?
前もって感謝します。