プロセルピナ
Top Internet
Mail
Private
Proxy
Capture
Device
Download Config
and
Words
Online
Help
Online
Home
[BACK]
Top > Proserpine Macro > Commands > file ifContains

 
 file ifContainsコマンド
Macro Top | Variables | Commands  


 

キーワードで関連する文字列を取得


file ifContains: (Parameters)

【Parameters】
  dir= string, データファイルのファイルパス
  file= string, データファイルのファイル名
  encode= string, データファイルのエンコード (Optional)
  separator= string, キーワードと取得文字列の区切り。省略時は ⇒⇒ の2文字。 (Optional)
  keyw.separate_chars= string, キーワード列記時の区切り。省略時は , の1文字。 (Optional)
  random.separator= string, 取得文字列をランダムで変えるときに指定する列記区切り。 (Optional)
  $keyw$= string, 取得文字列埋め込みの文字列変数。keyw部は自由に指定可能。 (Optional)

  keyw.expand= string, キーワード部がexpand表記されている場合の展開を指定 (Optional)
  keyw.match= string, 取得文字列の一部を、キーワードに含まれる文字列で置換 (Optional)
  keyw.del_chars= string, keyw.str=で指定した文字列に対し、比較から除外する文字の集合 (Optional)
  igC flag, 大文字小文字を無視して比較

  src.str= string, 検索される文字列
  src.expand= string, expand表記の場合の展開を指定 (Optional)
  src.kana_Han2Zen flag, 指定時、検索される文字列中の半角カナは全角として扱う (Optional)
  src.del_chars= string, ファイル各行の文字列に対し、比較から除外する文字の集合 (Optional)

  O:str= string, 検出した行
  O:keyw= string, ヒットしたキーワード (Optional)
  O:src= string, 検索された文字列 (Optional) ※src.str=で指定したもの
  O:result= string, 処理結果 (Optional)

データファイルに登録されているキーワードが、 パラメータ src.str= で指定した文字列に含まれていると、それに関連する文字列を データファイルから取得します。
例えば、
  if (strl[102].IndexOfAnyStr{"運|占"} >= 0) {
    strl[103]="大吉"
    }

のような処理は、
  file ifContains: dir=Dir.ThisMacro file="データファイル.txt" src.str=strl[102] O:str=strl[103]
の1行で代替できます。
(この場合、データファイル.txt には、どこかに
  運,占⇒⇒大吉
のような行があるものとします。)

 

データファイルの指定


ファイルは dir=file= で指定します。
フルパスで指定する場合は file= だけで指定します。
dir= と file= のパラメータによるファイルの指定

データファイルのエンコードは encode= で指定します。例えば、 encode="Shift_JIS" のように記述します。 encode=指定を省略した場合、データファイルの先頭行にエンコードタイプが記述されているものとして扱います。 記述が無かった場合(つまり、先頭行をエンコード指定行として解釈できなかった場合)は、 デフォルトの UTF-8 でデコードします。

encode= を指定したときは、ファイルにエンコード指定行が無いものとして扱います。 つまり、ファイルの全行が、データとして扱われます。
encode= を指定しなかったときは、ファイル先頭行をエンコード指定行として扱います。 エンコード指定行はデータとして扱われません。

データファイルは、
  あああ⇒⇒あいうえお
  かかか⇒⇒かきくけこ
のように記述します。上記2行の例は、src.str=で指定された文字列の中に「あああ」の文字列をみつけると、 「あいうえお」の文字列を取得し、 「かかか」の文字列をみつけると、「かきくけこ」の文字列を取得するものです。

 

取得文字列


取得された文字列は、O:str= で指定した文字列変数に設定されます。

データファイルの取得文字列の記述に含まれる $keyw$ の文字列は、 パラメータ $keyw$= で指定した文字列で置換されます。
例えば、データファイルに含まれる行に、
  あああ⇒⇒あいう$5$えお
がある場合に、str.src=で指定した文字列に「あああ」が含まれていると、この行がマッチして 「あいう$5$えお」 が取得されますが、 同時に $5$="だだだ" を指定していた場合は、「あいうだだだえお」と変換されたもので取得されます。

データファイルの取得文字列の一部を、$found$ を使って検索されたキーワードで置換することもできます。
例えば、データファイルが、
  山⇒⇒$found$がきれい
の場合に、str.src=で指定した文字列に「山」が含まれていると、「山がきれい」が取得されます。

パラメータ random.separator= でランダムセパレータを指定すると、そのランダムセパレータで文字列を区切り、 取得文字列をランダムに変えることができます。
例えば、データファイルが、
  あああ⇒⇒AAA||BBB||CCC
のときに、キーワード「あああ」でヒットすると「AAA||BBB||CCC」が取得されますが、パラメータで
  random.separator="||"
が指定されていると、「AAA」か「BBB」か「CCC」のいずれかの文字列がランダムに取得されます。

 

del_charsパラメータ (検索除外)


src.del_chars= で指定した文字集合は、キーワードマッチングで無視されます。
つぎの2行は同じ結果になります。
  src.str="あ!?$$$$$$あ!?あ???" src.del_chars="$!?"
  src.str="あああ"
この様に、src.str= で指定される文字列のゆらぎを吸収します。

キーワード側のゆらぎを吸収するには、keyw.del_chars= を指定します。データファイルに、
  あ!あ??!!あ???⇒⇒あいうえお
と記述してある場合で、 src.str=で指定した文字列に「あああ」が含まれているときに「あいうえお」を取得したい場合は、
  src.str="たたたあああかかか" keyw.del_chars="!?"
のようにパラメータ指定します。

 

expandパラメータ


src.expand= のパラメータは、src.str=で指定した文字列が expand表記 されている場合に指定します。
指定は、開始文字、区切り文字、終了文字の3文字で行います。
たとえば、src.str=で指定した文字列が
  {AAA|BBB|CCC} Z {DD|EE}
の場合に、src.expand="{|}" が指定されていると、文字列は、
  AAA Z DD
  BBB Z DD
  CCC Z DD
  AAA Z EE
  BBB Z EE
  CCC Z EE
の6行に展開されます。
どれかの行が キーワードに一致すると、対応する文字列を取得できます。 たとえば、データファイルに
  BB Z⇒⇒あいうえお
のような行があるときは上記のうち5番目の展開例に一致するので、「あいうえお」が取得できます。

データファイルのキーワードも、expand表記ができます。
src.str=で指定した文字列に「青い」または「あおい」が含まれているときに、文字列「Blue」を取得するには、
  {青|あお}い⇒⇒Blue
とデータファイルに記述し、パラメータで keyw.expand="{|}" と指定します。

 

キーワード列記


データファイルのキーワードは , で区切って列記できます。
src.str=で指定した文字列に「青い」または「あおい」が含まれているときに、文字列「Blue」を取得するには、
  青い,あおい⇒⇒Blue
とデータファイルに記述します。列記のセパレータに , 以外の文字を使用したい場合は keyw.separate_chars=パラメータで指定します。

【例】 src.str=で指定した文字列に「青い山」、「あおい山」、「赤い花」、「あかい花」のいずれかが含まれているときに、 文字列「よい景色」を取得するには、データファイルに
  {青|あお}い山,{赤|あか}い花⇒⇒よい景色
と記述し、パラメータで、
keyw.expand="{|}"
と指定します。

【例2】 src.str=で指定した文字列に「青い山」、「あおい山」、「赤い花」、「あかい花」のいずれかが含まれているときに、 文字列「~はよい景色」を取得するには、データファイルに
  {青|あお}い山,{赤|あか}い花⇒⇒$found$はよい景色
と記述し、パラメータで、
keyw.expand="{|}"
と指定します。
src.str="遠くに見えるあおい山は何?" が指定されていた場合、「あおい山はよい景色」という文字列が取得されます。

 

keyw.match= パラメータ


取得文字列に検出されたキーワードをそのまま埋め込むには $found$ を使用しますが、 キーワードの一部だけを埋め込みたいときは keyw.match=パラメータ を使用します。

次の例は、「赤い花」のキーワードで検出したときに、取得文字列を「赤はいい色です。」にするものです。



【コピペで確認】 上記のサンプルコードは メモ帳モードで開いたテキストフォームにコピー&ペーストして、 テストモード実行で 動作確認することができます。


上記例のように、keyw.match=パラメータ は、開始文字、セパレータ文字、終了文字 の3つの文字で指定します。
上記例では、キーワード「赤い花」がヒットするので、 取得文字列のうち、[無色|赤|緑|青] の部分が展開され、次の順でチェックされます。
  1. キーワード「赤い花」に文字列「無色」が含まれるか
  2. キーワード「赤い花」に文字列「赤」が含まれるか
  3. キーワード「赤い花」に文字列「緑」が含まれるか
  4. キーワード「赤い花」に文字列「青」が含まれるか
ここでは「赤」が含まれるので、取得文字列は「赤はいい色です。」に編集されます。
キーワードにどの文字列も含まれないときは、先頭の「無色」が使用されます。

 

O:src= パラメータ


O:src=で指定した文字列変数には、src.str=で指定した文字列が設定されます。 但し、expand表記は展開されたものになります。
パラメータを
  src.str="{A|B}XXX" src.expand="{|}"
のようにexpand表記で指定したとき、 「AXXX」と「BXXX」のどちらが使用されたかを知りたいときに指定するパラメータです。

[BACK]
プロセルピナ