VB.netのプロジェクトをC#にコンバートするにあたって、SharpDeveloperというオフラインツールでコンバートしたところ、完全には変換してくれなくて、手作業でコード修正するところがあった。その中でも、数が多くててこずっていたのがこんな文字列置換。
VB.net:DataGridView1.Rows(row).Cells(column).Value
C#:DataGridView1.Rows[row].Cells[column].Value
※RowsおよびCellsの後のカッコの種類が、丸カッコか角カッコかのちがい
※rowとcolumnはその行によって異なる
最初は手作業で1行ずつなおしていたが、該当箇所が数百行におよぶため、正規表現による文字列置換の方法を調べた。
検索文字:Rows\((.*?)\)
置換文字:Rows[$1]
解説。
・正規表現においてカッコはメタ文字なので、カッコそのものを表すのに頭に\を入れる
・検索文字の(.*?)は、その位置に何か文字があるという意味
・置換文字の$1は、検索文字の(.*?)を変更せずそのまま使うという意味
正規表現はアプリによって微妙にちがうようで、上の例はVisualStudioで有効だったもの。秀丸だとちょっとちがっていて、以下を見るとそのちがいが明らかになる。
【秀丸-正規表現】特定の文字を残し前後を置換したい
セキが止まらない状態が3週間続き、4回目の内科受診で処方されたのは吸入器。アレルギーつまりぜんそくなんじゃないかという可能性が出てきたのでその対策に振ってみるという医師の判断。ただのかぜでセキが出るというのなら2週間もあれば、おさまるのが3週間も続いているんだから。マイコプラズマでもインフルでもコロナでもなく、感染性はないだろうと。だったら会社には行っといたほうがいいと思って行ったが、その日に社内通達でセキが出ているのに出社している人が散見されるので、そんな場合は在宅勤務しないさいというものが出た。傍からみたら感性性があるかわからんのだから当然なり。ということで、せきが止まらないうちはずぅーと在宅勤務とすることに決定。せきが出続けるというのは大きなマイナスだが、そんな中でも小さな喜びとして出社しなくてよくなった。いいじゃないか。タダでは転ばねぇ、倒るる所に土を掴む。
今、歯医者に行って帰ってきたところ。上の奥から2番目の位置の歯(左右両方)の歯周ポケットが9mmだということは前から知っていた。2年ほど前のフラップ手術によって7mmくらいまで改善するも、時間の経過によって9mmに逆戻り。今日の施術はますいをして、歯と歯茎のあいだをグリグリとするもの。奥歯って根本が3つや4つに分かれていて、その又の部分に汚れが付いてしまっているとのこと。歯茎が下がっているからであり、またそのな汚れがあるから歯茎が下がり続けている。その箇所をターゲットに細いものを突っ込んでグリグリとしたり、レーザーで殺菌する。麻酔があまり効かないたちなので、うっすらとした痛みに30分くらい耐えてきた。毎日のケアはけっこうするほう。しかし、いかんせん体質もあって状況は悪くなるばかり。若い頃にあまり歯をみがかなかったというのが悔やまれるが、今さらしょうがない。体質ということでは、永久歯が2本なかったというのがあり、乳歯のまま過ごせたのは20代半ばくらいまで。そこにはインプラントが入っている。今の歯医者は歯周病に対するケアがしっかりしているので素晴らしい。月イチペースでこれからもずっと通いましょ。