C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 76 を表示中)
■44672 / )  Re[2]: VBの置換について。ひとつだけ置換は・・・できない??
□投稿者/ やまり (5回)-(2009/12/15(Tue) 16:15:21)
魔界の仮面弁士さん ありがとうございます。


MSDNも眺めたのですが、Count:= でなんばんめ、というのが取れるのを読み取れませんでした・・・

> Start:=x で、検索開始位置を調整することもできます。

そんなこともできるんですね。これも使えそうですね。


> Function(sz) If(Interlocked.Add(n, 1) = 3

これがちょっとどういう意味かわからないので、もうすこしじっくり見させていただきたいと思います。

とっても、感謝です。とりあえず、なんとか出来そうです!!





No44659 (魔界の仮面弁士 さん) に返信
> 2009/12/15(Tue) 10:09:41 編集(投稿者)
>
> ■No44652 (やまり さん) に返信
>>しかし、VBのreplaceは「すべてを置換」してしまうのですね・・・
>>・マッチした文字列一つ目だけを置換、はできないのでしょうか?
> Dim Src As String = "これとこれとこれとこれ"
> Dim Ret As String = Replace(Src, "これ", "あれ", Count:=1)
> とすれば、1 つだけ置換もできますよ。
> Start:=x で、検索開始位置を調整することもできます。
>
> 3 つ目だけを置換したいなら、
>  Ret = Replace(Replace(Src, "これ", "あれ", Count:=3), "あれ", "これ", Count:=2)
> とか。汎用的ではありませんし、文字列によっては使えませんけれども。
>
> 汎用的にするなら、gtk2k さんの方法かな。
>
>
> ■No44653 (やまり さん) に返信
>>できればもっとシンプルに「○番目のマッチを置換」みたいなことができるとうれしいのですが。。。
> その前に、マッチする文字列が○個以上存在するかをチェックする必要がありそうですね。
> 事前チェック無しで良いなら、こういう書き方も出来ますけれども。(VB2008)
>
> 'Imports System.Threading
> 'Imports System.Text.RegularExpressions
>
> '3個目の「これ」を「あれ」にする。
> Dim n As Integer = 0 '置換回数カウント用
> Dim ret As String = Regex.Replace("これとこれとこれとこれ", "これ", Function(sz) If(Interlocked.Add(n, 1) = 3, "あれ", "これ"))
返信 編集キー/


管理者用

- Child Tree -