• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:vb 配列の再検索について)

vb配列の再検索について

このQ&Aのポイント
  • vbで配列を検索し、見つかった場合に行と位置を表示する方法について質問です。
  • 現在は一回目の検索はできますが、ボタンを押すたびに再検索する方法や表示を切り替える方法についてアドバイスをお願いします。
  • また、vbでの配列操作に関しても教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • KG_
  • ベストアンサー率62% (34/54)
回答No.3

最後に該当した行を覚えておく必要がありますよね。 例) ------------------------------------ Private startIndex As Integer (省略) For j = startIndex To UBound(a1) (省略) If i <> 0 Then startIndex=j+1 '最終行+1を確保 Exit For End If (省略) ----------------------------------- startIndexの初期化のタイミングや最終行に達した場合等の処理は 考えてみてください:)

bi_bi_
質問者

お礼

 アドバイスありがとうございました^^

その他の回答 (3)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.4

お使いのコードがあれば公開しても支障の無い範囲で投稿しましょう Array.FindIndexと前回発見した位置を記憶しておいてということでしょうか Formレベルの変数に dim sTag as String    ' 検索する文字列 Dim nStart as Integer  ' 検索開始位置 Private Function myFindFunc( byVal ss as String) as Boolean   return ( ss.IndexOf( sTag ) > -1 ) End if を記述して、ボタンのクリックイベントに dim r,i as integer sTag = Text.Text TextBox1.Clear() TextBox2.Clear() TextBox3.Clear() r = Array.FindIndex( a1, nStart, AddressOf myFindFunc ) if r > -1 then   TextBox1.Text = a1(r).IndexOf( sTag ) + 1   TextBox2.Text = r + 1   TextBox3.Text = a1(r) end if nStart = r + 1 といった感じでしょう ・・・

bi_bi_
質問者

お礼

アドバイスありがとうございました^^

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

検索対象をスキップするように組めばいいでしょう a2 = Text.Text Intger.TryParse( TextBox2.Text, r ) i = 1 j = r for each ss as string in a1   if j > 0 then     j -= 1     Continue For   end if   i = ss.IndexOf( a2 )   r += 1   if i > -1 then     TextBox1.Text = i+1     TextBox2.Text = r     TextBox3.Text = ss   end if next VB.NET2003以前なら for each ss as string in a1   if j > 0 then     j -= 1   else     i = ss.IndexOf( a2 )     r += 1     if i > -1 then       TextBox1.Text = i+1       TextBox2.Text = r       TextBox3.Text = ss     end if   end if next といった具合でしょう String.IndexOfで見つからなかった場合の値は -1ですよ

bi_bi_
質問者

補足

回答ありがとうございます。 説明下手ですみません。 a1に以下の内容があった時 a1(0) = "四面楚歌" a1(1) = "一石一石" a1(2) = "石橋を渡る" a1(3) = "石橋を渡る" a1(4) = "四面楚歌" 楚歌で検索ボタン(クリック)をしますと 1(行)3(位置)が表示されて。  もう一回検索ボタン(クリック)をしますと 5(行)3(位置)がでるようなことなのです。  ボタンをおすたびに、あったときは表示されるようにしたいのです。 アドバイスいただいた方法だと、最後までいきます。  説明下手ですみません。 よかったら おしえてください。

回答No.1

??? フォーム上にボタンを置いてボタン.Clickイベント中に上記の処理を入れればいいのでは? 以下独り言 またエスパー質問だろうか・・・

bi_bi_
質問者

補足

こんばんは、 上記の処理でやりますと。 ”例”と検索をかけると、 text1.Textには 1と出力。(位置表す) text2.Textには 1と出力。(行表す) text3.Textには 例1と出力。 このように表示されまして また クリック(検索ボタン)をおしても text1.Textには 1と出力。(位置表す) text2.Textには 2と出力。(行表す) text3.Textには 例2と出力。 と表示されないのです。 すみません 説明不足で よかったら アドバイスおねがいします。