VB.NET2003を使っています
正規表現を使って、マッチした文字列の直後の位置に
ピンポイントで文字列を挿入できませんでしょうか。
例えば:
Text = "<ABCD><HIJK>"
↑ ココに<EFG>を入れたいです
今はReplaceを使って
Regex.Replace(Text, "<ABCD>", "<ABCD><EFG>")
としていますが、これを
Regex.Replace(Text, "<ABCD>(ココ)", "<EFG>")
のような事が出来ませんでしょうか。
<ABCD>を上書きするような形ではなく、もっと賢い方法が
あるのではないかと、悩んでいます。
どなたかご存じでしたら、教えていただきたいです。
よろしくお願いします。
気持ちはわかりますが、文字列の挿入場所を見つけ、文字列の挿入をしても
結局内部処理としては、文字列の領域の再確保、文字列のコピーと言うようことを
することになり、工夫しても余り意味が無いような気がします。
文字列の置き換えで長さが頻繁に変わるのであれば、
StringBuilderクラスのReplaceを使った方が速いかも知れません。
Dim sb As New StringBuilder
sb.Append("<ABCD><HIJK>")
sb.Replace("<ABCD>", "<ABCD><EFG>")
Text = "<ABCD><HIJK>"
Regex.Pattern="(<ABCD>)"
Regex.Replace(Text, "$1<EFG>")
こうでしょうか?
みためだけですが・・・
返事が遅くなってごめんなさい。
ねろさん あんさん お返事ありがとうございます。
結局あんさんの方法で(後方参照っていうのかな?)
やることにしました。正規表現の部分がスッキリして
ソースも見やすくなりました。
どうもありがとうございました。これからも頑張って
勉強します。
ツイート | ![]() |