プロが教えるわが家の防犯対策術!

【VB.NET】文字列検索方法

 今晩は,質問させていただきます.どうぞよろしくお願いいたします.

 例えば、Str1 = "ABCABCABCABC" におきまして
「4番目の"B"」の位置(この場合11)を知りたい、という場合に
すぐにそれが計算できる関数のようなものってあるのでございましょうか??

↓のようなめんどくさい方法しか思いつかないのでございますが。。。orz
 ・Str1.Indexof("B") が2になるのでそこまで消す
  →Str2 = "CABCABCABC"
 →・上と同様に2回目
  →Str3 = "CABCABC"
 →・上と同様に3回目
  →Str4 = "CABC"
 →・最後に一回検索して、今まで消した文字数合計と検索位置を加える →「11」
  orz

 もし何かもっと早い方法などございましたら、是非ともご紹介
いただきたくどうぞよろしくお願いいたします。

A 回答 (2件)

http://ideone.com/HhEhx

#俺が正規表現を褒めるのは割と珍しい。

#正規表現あまり好きでない俺は、
#ごちゃごちゃ書いていたのだが
#Monoはlambda式にエラーを出すようで、
#http://ideone.com/henCn
#を実行することが出来なかった。

#なお、"ABC"等、そもそもこれにマッチしない文字列が指定された場合は0を出力する。

この回答への補足

(お礼後の捕捉になります)

。。よくよく見させていただくと、なんとコーディングしていただいた上に
UPしていただいているんですね^^/
お忙しい中、ご親切にどうもありがとうございました!!m(_ _)m

補足日時:2010/06/15 19:32
    • good
    • 0
この回答へのお礼

 どうもありがとうございます!!m(_ _)m
正規表現で出来るのでございますか。。今まで
難しそうなので逃げ回ってばかりおりましたが。。^^;
これを機会に頑張ってみます、どうもありがとうございました!!!

お礼日時:2010/06/14 23:18

IndexOfの仕様をよくみてください。


http://msdn.microsoft.com/ja-jp/library/system.s …
「検索は、指定した文字位置から開始されます。」というのがあります。

idx=Str1.Indexof("B") '1文字目
idx=Str1.Indexof("B",idx + 1) '2文字目
idx=Str1.Indexof("B",idx + 1) '3文字目
idx=Str1.Indexof("B",idx + 1) '4文字目
宣言、エラー処理は省略しました。どこまで早いかわかりませんが、すくなくとも、いちいち削除するやりかたよりは早いです。
    • good
    • 0
この回答へのお礼

 どうもありがとうございます!^^
確かにこっちの方が早いですね。コーディングも一瞬ですし。^^
この度はご親切にアドバイスいただきまして助かりました。
どうもありがとうございました!!m(_ _)m

お礼日時:2010/06/14 23:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!