文字列中にある一部分だけを置き換える

備忘。正規表現を使ってある条件にマッチする場合、その文字列の一部分を別の文字列に置き換える、ということをやってみる。たとえば次のような文字列があったとする。

“00 abcde” “01 fghij”

上記の文字列を、ダブルクォートで囲まれた部分に半角スペースがあれば、その半角スペースをアンダーバーに置き換えるという処理をする。目的の形式としては次のような文字列が作成されればいい。

“00_abcde” “01_fghij”

考え方としては、ダブルクォートで囲まれた部分は、1個のダブルクォートから始まり1個以上の文字列があり、スペースが続き、そして1個以上の文字列があって1個のダブルクォートで終わる、という範囲になる。これによりダブルクォートで囲われた部分が複数あっても識別することができる。下記にサンプルコードを記載する。半角”(” “)”で囲われた部分は置換せずに残すという意味になる。置換後の文字列には$1と$2という部分があるが、これは置換前のカッコを意味しており、その数字はカッコの出現順を意味している。置換対象は半角スペースのみで、それを半角アンダーバーに置き換える、となる。

サンプルコード

Imports System.Text.RegularExpressions

...

searchStr = Regex.Replace(targetString, "("".+?) ([^""]+?"")", "$1_$2")

コメントを残す

メールアドレスが公開されることはありません。