| ||
| ||
| ||
前ページへ [ステップアップ WSHへ戻る] 次ページへ |
Level.5 指定の文字列を含む行だけを表示する | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Level.4では、読み込んだテキストファイルの内容を、全て1つのメッセージボックスに詰め込んで表示してみました。Level.5では、いよいよ検索機能を付加し、指定の文字列を含む行だけを表示させるように修正してみます。また、「ファイル一覧表示」の機能は不要なのでこれも取り払います。
■ テキストファイルを読み込んで検索文字列を含む行のみを表示するまずスクリプトの流れを説明しますと、ファイル名ループで取得した一つ一つのテキストファイルについて、その内容を全部読み込み、連結して、1つのメッセージボックスの中に表示します。これを、ファイル数分繰り返し、最後にLevel.3までと同様に、ファイル名一覧とフォルダ一覧を表示する、という流れになっています。
それでは変更ポイントを見てみましょう。前回までと同様、見易さの為に入れた空行やコメントの説明は省きます。
■ 3行目
文字列検索用のオブジェクト"RegExp"を作成しています。RegExpは単なる検索機能ばかりではなく、正規表現を用いた検索や、文字列置換などの機能を提供してくれます。 ところで"正規表現"って何でしょうか?。正規表現は、いわゆる「メタ文字」「マスク」などと言われる、特殊な意味を持った文字を使った検索文字列の指定方法です。例えば、この後の行で、「ファイル」という文字列を検索していますが、「^ファイル」とすることで行の先頭に「ファイル」という文字列が出現する行のみを表示することが可能です。ちなみに、用意してあるテキストファイル無いには「ファイル」から始まる行はありません。実験するならば、「スクリプト」「^スクリプト」などとして検索してみましょう。 正規表現について簡単に表に纏めてみました、これ以外にもありますので一度ドキュメントを眺めて見て下さい。
■ 4行目
検索文字列を変数(srhStr)に入れています。最初は文字列"ファイル"を含む行を表示することにしますが、この値を適当に変えることで、検索文字列が変化します。
■ 6行目〜8行目6〜8行目では、実際に検索する前に、RegExpオブジェクトに対してちょっとした指示をしています。
6行目のPatternプロパティでは、先程srhStrに格納した検索文字列を、RegExpオブジェクトに渡しています。 7行目のGlobalプロパティは、検索対象(ここではテキストファイル中の1行)に複数の検索文字列が含まれているときの、動作を指定しています。"True"は全体を検索し、"False"にすると最初に見つけたら検索をやめます。つまり、1行中に2つヒットする文字列があっても、後ろの方は無視するわけです。Level.5ではどちらを指定しても結果は変わりませんが、後々の修正を考えて"True"(全体を検索)を指定しています。 8行目のIgnoreCaseでは、アルファベットの大文字・小文字の扱いを指示しています。今回は、日本語を検索文字列としているので関係ありませんが、検索文字列にアルファベットを指定した時に、このオプションが影響します。"True"は大文字・小文字を気にしません(無視します)、"False"にすると大文字・小文字は違う文字として扱われます。
■ 19行目〜21行目
Level.4と同じく18行目〜24行目がテキストファイルを1行目から最後の行まで読み込んでいる繰り返し処理になります。Level.4では、読み込んだ行(tmpLine)を無条件にメッセージ表示用の変数(srhLine)にくっ付けていましたが、Level.5では21行目のIf文で、指定の文字列(ここでは「ファイル」)を含む場合だけ、srhLineに該当行をくっ付けるようにしました。 21行目のRegExpオブジェクト(regEx)のTestメソッドでは、括弧内の文字列内に、先程Patternプロパティに指定した検索文字列が含まれるかどうかを評価します。 他に、ファイル一覧表示の為のロジックを削除していますが、該当個所をどのように表現するかを苦慮しまして、上記のlevel5.vbsの行番号にアンダーラインを入れることにしました。例えば、10行目にアンダーラインが入っていますが、これは、10行目と11行目の間にあった行を削除していることを意味しています。
■ 実行してみましょうさて、早速実行してみましょう。
実行すると、上記のように「ファイル」という文字列を含む行が全て表示されます。ところが、「OK」をクリックして先に進めていくと、最後の2つのファイルはファイル名しか表示されませんでした。これは、「ファイル」という文字列が1つも含まれていない為に、このような状態となってしまっていると思われます。 そんな訳で、何か変なメッセージボックスも表示されたりもしますが、とりあえず、このレベルでなんとなく検索できるようになりました(笑。不便ですが、2行目の検索対象フォルダや、4行目の検索文字列を変えることで、任意のフォルダ、任意の文字列を検索することができますので、色々試してみて下さい。 さて、今回はここまでです。次回のLevel.6では、空のメッセージボックスをなんとかしたいと思います。 |
前ページへ [ステップアップ WSHへ戻る] 次ページへ | |
※全ては自己責任でお願いします。 ※当サイトに関するご連絡は tomomo_c@hotmail.com までお願いします。 |
最終更新日 2004.4.9 |