• ベストアンサー

VBS初歩的質問

すいません、色々調べましたが以下のことが思いつきませんのでご教示ください。 テキストファイルを一行ずつ読み込まして、文字列を検索するところまではできました。 文字列の検索は一行ずつ読み込ましたタイミングで、IF文で行っています。 そのテキストファイル内に同じ語句のものがある場合、始めのものだけを取得したい場合どうすればよいでしょうか。 一行ずつ読み込ましている関係上、2回IF文の条件にひっかかります。 具体例(上から5行あり1行目と4行目でIF文に入り、抽出してしまう) abc d e abc f

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

VBSを使っているというだけで、VBSの質問ではない。 処理ロジックというものを経験で会得していく必要がある点だ。 もちろん本やWEBに書いてあれば、それで勉強してその後の踏み台にしても良いのだが。しかし余り解説書は少ない。 書いてあっても諸所に散らばっていたりする。 初心者は経験が無く、視野も狭いので、ここでつまずくのだ。 そして大きく分けて分類しても、やり方が数種類在る場合が在る。だからプログラマにより、色々なやり方で処理される恐れがある。 また経験や勉強不足や苦手感で、便利な機能も使わない人もいるだろう。 処理系によっては、ズバリ用意された機能があり、楽に出来る場合がある(SQLのDistinctのようなイメージ)。そう言うのがソフトの進歩なのだろう。 ーー 本件は (1)ソート法 abcは近接レコードになる。同じものがあるかどうか判別がしやすい。 (2)過去蓄積検索法 過去にabcを書き出したか都度調べる (3)(FSOの)Dictionaryなどの仕組みを使う (2)と似ている (4)その他 思いつかないが、新手を生み出すには、相当な経験とひらめきが必要だ (5)エクセルにデータを写し、フィルタオプションの設定ー重複するレコードは無視する、などを使う。 (質問データが不十分で、これで出来るか十分検討して無いので出来るかどうかいいかねるが) ーー 本件は私ならソート法が好きだ。しかしCSVやTEXTファイルで任意の項目でソートが出来るソフトも余りないので 難しい点はある。ソートをプログラム自作してソートする方法もあるがお奨めできない。 エクセルに一旦読ますことをすれば、簡単にソートは出来て、またCSVやTXTファイルに保存できるとは思うが 横道にそれて面倒。 初心者にはドレが良いか、ドレをしたらと言いかねる点だ。質問者が少し考えて見ては。

craftx
質問者

お礼

皆様ありがとうございます。解決いたしました。

その他の回答 (2)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

既に抽出した文字列を抽出済み配列に登録、検索都度にこの配列をチェックして登録済みならば抽出対象外にするぐらいでしょうか。 一例ですが、連想配列(Dictionaryオブジェクト)を使用しては如何でしょうか。

回答No.1

何がしたいのか十分説明されてないのでよくわかりません。 具体例の場合、5行あるデータのうち、特定の文字列(ここではabc)が 存在する行を取得したいということでしょうか? その時、最初に見つけた行だけを取得したいということでしょうか? そうであれば、abcが含まれる行を見つけた時点で ファイル読み込みループを脱出して、検索を続行しなければいい だけではないでしょうか? この回答が的外れであれば、なにがしたいかと、自分が作った ソースコードを示せば、誰かがアドバイスしてくれると 思います。

craftx
質問者

お礼

ありがとうございます。 やりたいことはテキストファイルを読み込まして、 それを一行ずつreadlineで見ていきます。 具体例でいうabcがあるかを一行ずつ見ていきます。 毎回IF文で調べる構文に今していますが、 2行目でabcで抽出して、5行目でも抽出されます。 ループをぬけるぬけないではなく、一行ずつ読み込み、全行検索対象にされます。