HSP教室 入門編

その15 文字列の検索

その1.単純な文字列検索

文字列の検索のサンプルです。
twに検索対象(1行の文)、cpwに検索する文字(検索キーワード)をいれてるとhctに値が入ります。
hitしない場合は−1。
hitした場合はそのオフセットが入ります。
また、1行中に何度かcpwが登場しても、最初のhitしかみていません。
cpwの最初の1文字が無いかをloopしながら探します。
cpwの内容をいろいろ変えて試してみましょう。
数字が並んでいるのは何文字目かという、ものさしがわりに使います。

2.複数マッチする文字列検索

上のサンプルプログラムでは、調べている単語が何度も出てくる(マッチする)場合に、困ってしまいます。
instr命令では、ワードサーチのオフセットを設定できるので、その機能を利用することにします。
さて、ここで、注意しなければいけないのは、オフセット指定をして、instr命令を実行した場合の答えです。
選られる答えは、ワードを発見しなかった場合-1、そして発見した場合はサーチ時のオフセットからのオフセットになります。
ちょっと、複雑ですね。
たとえばtr="abcdefabc"というワード内を"bc"というワードで検索する場合。
「c=instr(tr,0,"bc")」でサーチを始めると、結果のcには1が入ります。
当然次のサーチは1+1の場所から行う必要がありますね。
そうすると答えは5です。
元のtrという変数のオフセットでは7の位置にあるので、混乱するかも知れませんが、 検索スタート位置からのオフセットだという事を覚えておいてください。

sample15.zipをダウンロード。


その16に行く

目次に戻る