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

 
 splitコマンド
Macro Top | Variables | Constants | Commands | Ex-Commands  


 

書式


split: (パラメータ)

【パラメータ】
src= string, 分割元の文字列
max= int, 最大分割数 (optional)
O:length= int, 分割数を設定先

key= string, 分割キーとなる文字列
  -or-
key_chars= string, 分割キーとなる文字集合
  -or-
yinyangPacked flag-string, YinyangPackコマンドで結合された文字列を分割するモード

index= int/string, 分割した文字列の格納先の、グローバル文字列配列のインデックス
strl.index= int/string, 分割した文字列の格納先の、ローカル文字列配列のインデックス

removeEmpty= bool, 空白文字列を登録しない場合は true を指定 (optional)
regex= string, 選別に使用する正規表現 (optional)
regex.match= string, 正規表現に一致するものを外す場合は remove を指定 (optional)

 

概要


パラメータ src で指定された文字列を、 パラメータ key で指定された文字列で切り出し、 index(もしくはstrl.index) で指定された場所に格納します。
切り出す最大数は max で指定します。この指定は省略可能です。
結果として切り出された個数は O:length で指定された整数配列に設定されます。

『プロセルピナ』version1.06.07 以降では、文字集合で切り出すことができます。 文字集合は key_chars で指定します (key は指定しません) 。
例えば、 < , > , " の、3つの記号で切り出す場合は、

  key_chars="<>\""

と指定します。

key または key_chars で切り出した結果、空になる要素も、文字列長0で登録されます。 登録しない場合は、
  removeEmpty=true
を指定します。
この指定は 『プロセルピナ』version1.06.07 以降で有効です。

splitコマンドで分割した文字列の再結合は、 strcatコマンド が便利です。

 

記述例


split:   src="abc\"def"   key="\""   index=2   O:length=int[6];

  文字列 abc"def を、 "記号 で2つに分割する例です。

  "abc" のように、全体を "記号 で囲まれる文字列の中に "記号 を記述する場合は、直前に \記号 でエスケープして \" のように表記ます。

  この例では、indexで 2 が指定されているので、 str[2] に abc の文字列、 str[3] に def の文字列 が設定されます。
strl.index=2 と指定されていた場合は、 strl[2] に abc の文字列、 strl[3] に def の文字列 が設定されます。

  int[6]には、分割数の 2 が設定されます。


split: src=input[0] key=strl[1] strl.index=100 max=10 O:length=intl[100];

  strl[100]以降に設定する例。

 

index指定の拡張 (version 1.06.03以降)


「プロセルピナ」version 1.06.03 以降では、indexに 文字列のprefix を指定することができます。 格納位置は '.'記号 以降の数字で表されます。
例えば、indexに item を指定した場合、最初の要素にアクセスするindexは、 "item.0" その次の要素は、 "item.1" になります。
これらは "記号 で囲まれる(=文字列である) ことに注意してください。


split: src="abc\"def" key="\"" index="item" O:length=int[6];

  文字列 abc"def を、 "記号 で区切る例です。
  "~"の文字列内に"を表記する場合は \記号 でエスケープします。
  この例では、str["item.0"] に abc の文字列、 str["item.1"] に def の文字列が設定されます。
  int[6]には 2 が設定されます。
添え字部分を "記号 で括らない str[item.0] のような表記は、記述エラーになります。 str["item.0"] と書く必要があります。


次の例は、 C:\MyMail\ctrl のフォルダにある5つのファイルを、 C:\BackUp\MyMail\ctrl のフォルダにコピーする例です。
コピーするファイルは strl["files"] の変数に、  ,,  区切りで指定されています。
これを splitコマンド で切り出して使用します。



splitコマンドの strl.index="file" の指定により、切り出された文字列は、
  strl["file.0"]
  strl["file.1"]
  ...
  strl["file.4"]
に格納されます。

splitコマンドの O:length=intl["files"] の指定により、 intl["files"] には 5 が設定されます。

 

正規表現で文字列を選別する


このオプションは マクロヴァージョン20090101以降 のサポートです。

オプションパラメータ regex= で正規表現を指定することにより、 結果として得る文字列を選別することができます。

パラメータ src= で指定された文字列は、 key=で指定された単一文字列、 または key_chars=で指定された文字群によって切り出され、 removeEmpty=true の指定がある場合は空文字列が除外されます。
regex=の指定がある場合は それ以降にさらに選別が行われ、 正規表現に一致しないものは結果から除外されます。

正規表現に一致したものを残すのではなく 一致したものを除外したい場合は、
  regex.match=remove
のオプションパラメータを追加してください。

O:Length=で設定される分割数は、正規表現によるマッチングで選別した後の数になります。

max=のパラメータを使って分割した後に、正規表現で選別するので、 max=で指定した個数より少ない結果になる場合があります。
例えば、src=で指定した文字列を10個に分割できる場合で、 max=による分割上限を設定せずに分割し、正規表現をregex=に設定して選別すると5個になる場合を考えます。 この場合で、 max=5 を指定するとまず5つに分割されますが、regex=による選別はその5つに対して行われることになるので、 結果として5つより減るケースが考えられます。

 

YinyangPackコマンドで結合した文字列の分割


このオプションは マクロヴァージョン20090515以降 のサポートです。

YinyangPackコマンドで結合した文字列は、このコマンドで分割することができます。
コマンドパラメータに yinyangPacked のオプションパラメータを指定します。
key= 及び key_chars= のコマンドパラメータは指定しません。

split: src=str[10] yinyangPacked strl.index=10 max=10 O:length=intl[100];

str[10]を分割し、strl[10]以降に設定する例

[BACK]
プロセルピナ