VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2003/11/14(Fri) 10:33
投稿者ちり
Eメール
URL
タイトルRe^2: 配列の中の文字列を検索しその位置を知るには


目的は、平均60Mくらいのテキストデータの中から、ある文字列を探し出し、
その文字列を含む行の内容を変更する。という作業です。
また、変更するための検索文字列はそのテキストデータに記述されていて、
変更する検索文字列の数もかなり多いのです。

ですから、

Open filePath For Input As #tmp
Txt = StrConv(InputB(LOF(tmp), 1), vbUnicode)
Close #tmp

S = Split(Txt, vbCrLf)

という感じでテキストデータを読み込み、
まず配列 S に格納しています。

その後、配列 S の中身を検索して、検索文字列を別の配列 Sb に格納し、


Function AAA(ifst As Long, strETC As String) As Long
    Dim i As Long
    For i = ifst To UBound(S) - 1
        If InStr(S(i), strETC) > 0 Then
            AAA = i
            Exit For
        End If
    Next i
End Function

このような関数を使って

For i1 = 0 To UBound(SB) - 1
    For i2 = 0 To UBound(s) - 1
        n = AAA(i2, SB(i1))
        '中身を書き換えるため処理
        BBB n
        i2 = n
    Next i2
Next i1

という感じで処理していますが、処理がかなり遅いため、
とても実用的とはいえません。
i1,i2 のループは処理上しょうがないとして、
AAA の処理をイメージ的には、

    n = InStrArr(startNo, S(), strETC)

というような感じで、
InStr の配列版のような処理があればと思い投稿しました。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -