エクステンション解説/String Parser 2/コマンド解説

Last-modified: 2011-12-24 (土) 22:30:55

解説と言うかヘルプの翻訳。


String Parser 2

作成者Third Eye Entertainment
バージョン2.02

String Parser 2 オブジェクトは、強力な構文解析や、文字列を小分けしトークンのリストとして扱ったり、文字列を組み立てる機能をデベロッパーに提供します。構文解析やサブ文字列機能で、要所ずつに分けたり、ワイルドカードやサブ文字列を使って検索もできます。特にトークン化機能で入り組んだ情報を簡単にできます。

リスト(list)とは、区切り記号によって区切られたトークンの文字列です。トークン(token)とは、他のトークンまたはサブ文字列から分断された簡単なサブ文字列です。区切り記号(delimiter)とは、文字列を区切るものです。String Parser 2 はいくつもの区切り記号を扱うことができ、区切り記号の長さは自由に出来、ワイルドカードマッチングも扱えます。

ここでは例として、文中に単語がいくつあるか知りたいとします。

リストの例として次の文を使います。

Sean was here. Hey guys! See how we can spell D-E-L-I-M-E-T-E-R-S... wait--did you hear that?

区切り文字は次のようにします。
" "
"."
","
"!"
"?"
"--"

例文では上記の6種類の区切り文字が必要です。ドキュメント全体を調べたい場合は";", ":", などの他の句読点も含めるようにしてください。

さて、ListGetAt$("String Parser", 3")と要求すると"here"が返ってきます。ほら、3番目の単語が返ってきたよ?すごいでしょ?ちょっと特殊な場合、ワイルドカードを有効にした場合に ListFind("String Parser", "?-E*", 1) と要求すると 11 が返ってきます、なぜならこのワイルドカードの数式に、11番目のトークン"D-E-L-I-M-E-T-E-R-S"が。最初(1)にマッチするからです。以下にトークン(単語!)の完全なリストを書き出します。

1) "Sean"
2) "was"
3) "here"
4) "Hey"
5) "guys"
6) "See"
7) "how"
8) "we"
9) "can"
10) "spell"
11) "D-E-L-I-M-E-T-E-R-S"
12) "wait"
13) "did"
14) "you"
15) "hear"
16) "that"

ListCount("String Parser")を実行したら 16 が返ってくるよ ;)

特徴

  • 旧 String Parser の特徴にさらに多くのものを加えました
  • 保持したり操作したりするテキストの量に制限はありません
  • ファイルを読み込んだりファイルに書き込んだりできます(テキスト、CSV、INI、MMF配列、Dynamic Array)
  • 文字列比較で大文字と小文字を区別したり区別しなくしたりできます
  • 簡単に探索のワイルドカードを有効/無効にできます。使えるワイルドカードは以下のものです。
    • ? は1文字にマッチします
    • * は0文字以上にマッチします
  • トークンリストに使う区切り記号の数に制限はありません
  • トークンリストに使う区切り記号の長さに制限はありません
  • New URLEncode関数とIs URL Safe条件
  • 15個のトークンリスト関数!ListFind, ListContains, ListSortAsc, などなど
  • トークンリスト関数でワイルドカードを使えます
  • コンマ区切りテキストファイル(CSV)をエクスポート、インポートできます
  • MMF 1.5配列ファイルをエクスポート、インポートできます。MMF Pre-1.5配列ファイルをインポートできます
  • Dynamic Array 2 ファイルをエクスポート、インポートできます
  • New INIファイルフォーマットでエクスポート、インポートできます
  • ソース文字列のMD5署名を得ることができ、証明やチェックサムに使えます

条件

Is URL Safe?

構文Is URL Safe
コメントソース文字列を URL 内で使ってもよい場合、真を返します。URL 内で使ってもよい文字列とは、URL で無効な文字はエスケープされている文字列のことです。*1
Is URL Safe

アクション

Set source string

構文Set source string to szString
コメントソース文字列を指定した文字列に変更します。String Parser のほとんどのアクションや数式がこのソース文字列上で動作します。
Set source string to "my test string"
引数引数説明
szString文字列任意のテキスト

File

Save to file

構文Save to file szFilename
コメント指定したファイルに文字列を保存します。
Save to file "myfile.txt"
引数引数説明
szFilename文字列ファイルへのパス。

Load from file

構文Load from file szFilename
コメント指定したファイルから新しい文字列を読み込みます。
Load from file "myfile.txt"
引数引数説明
szFilename文字列ファイルへのパス。

Append from file

構文Append from file szFilename
コメントファイルの内容をソース文字列に読み込みます。ソース文字列にテキストがある場合、その後ろに読み込んだ文字列を加えます。
Append from file "myfile.txt"
引数引数説明
szFilename文字列ファイルへのパス。

Append to file

構文Append to file szFilename
コメントファイルの末尾に文字列を加えるように文字列を保存します。
Append to file "myfile.txt"
引数引数説明
szFilename文字列ファイルへのパス。

List Tokenizing>Delimiters

Reset delimiters

構文Reset delimiters
コメント現行のすべての区切り記号を削除します。
Reset delimiters

Add delimiter

構文Add delimiter szDelimiter
コメント指定した区切り記号を現行の区切り記号のリストに追加します。区切り記号の長さは自由で、ワイルドカードが有効の場合、区切り記号にワイルドカードを使用できます。
Add delimiter ","
引数引数説明
szDelimiter文字列区切り記号。トークン(サブ文字列)の区切りに使う文字列。

Set delimiter

構文Set delimiter to szDelimiter at nIndex
コメント指定したインデックスの区切り記号を指定した区切り記号に変更します。現行の区切り記号を削除し、同じインデックスの位置に新しい区切り記号を作成します。ワイルドカードが有効の場合、区切り記号にワイルドカードを使用できます。
Set delimiter to "+" at 0
引数引数説明
szDelimiter文字列区切り記号。トークン(サブ文字列)の区切りに使う文字列。
nIndex整数値リストのインデックス番号。

Delete delimiter index

構文Delete delimiter at index nIndex
コメント指定したインデックスの位置にある区切り記号を削除します。
Delete delimiter at index 2
引数引数説明
nIndex整数値リストのインデックス番号。

Delete delimiter

構文Delete delimiter szDelimiter
コメント指定した区切り記号を削除します。以降この区切り記号はトークンの区切りに使われません。
Delete delimiter " "
引数引数説明
szDelimiter文字列区切り記号。トークン(サブ文字列)の区切りに使う文字列。

Set default delimiter index

構文Set default delimiter at index nIndex
コメント指定したインデックスの区切り記号をデフォルトの区切り記号にします。デフォルトの区切り記号は、トークンのリストに要素を追加したときに挿入されます。
Set default delimiter at index 0
引数引数説明
nIndex整数値リストのインデックス番号。

Set default delimiter

構文Set default delimiter to szDelimiter
コメント指定した区切り記号をデフォルトの区切り記号に設定します。指定する区切り記号は前もって Add delimiter アクションや Set delimiter アクションで作成した区切り記号でなければなりません。
Set default delimiter to "_"
引数引数説明
szDelimiter文字列区切り記号。トークン(サブ文字列)の区切りに使う文字列。

List Tokenizing>Files

Save as CSV

構文Save as CSV szFilename
コメントコンマ区切りテキストファイルとして文字列を保存します。
Save as CSV "myfile.csv"
引数引数説明
szFilename文字列ファイルへのパス。

Load from CSV

構文Load from CSV szFilename
コメントコンマ区切りテキストファイルを新たにソース文字列に読み込みます。
Load from CSV "myfile.csv"
引数引数説明
szFilename文字列ファイルへのパス。

Save as MMF Array

構文Save as MMF Array szFilename
コメントMMF 1.5 配列フォーマットで文字列を保存します。
Save as MMF Array "myfile.arr"
引数引数説明
szFilename文字列ファイルへのパス。

Load from MMF Array

構文Load from MMF Array szFilename
コメントMMF 配列ファイルを新たにソース文字列に読み込みます。
Load from MMF Array "myfile.arr"
引数引数説明
szFilename文字列ファイルへのパス。

Save as Dynamic Array

構文Save as Dynamic Array szFilename
コメントDynamic Array file として文字列を保存します。
Save as Dynamic Array "myfile.dar"
引数引数説明
szFilename文字列ファイルへのパス。

Load from Dynamic Array

構文Load from Dynamic Array szFilename
コメントDynamic Array file を新たにソース文字列に読み込みます。
Load from Dynamic Array "myfile.dar"
引数引数説明
szFilename文字列ファイルへのパス。

Save as INI

構文Save as INI szFilename
コメント要素のリストを INI ファイルとして保存します。すべての要素がグループ "List" 下にあり、Elements という項目にリスト内の要素数が入ります。リストの要素はそれぞれ "Element1"、"Element2"、…という名の項目に入れられます。
Save as INI "myfile.ini"
引数引数説明
szFilename文字列ファイルへのパス。

Load from INI

構文Load from INI szFilename
コメントすべての項目の(等号の右側にある)値を、デフォルトの区切り記号で区切ったリストとしてソース文字列に読み込みます。*2
Load from INI "myfile.ini"
引数引数説明
szFilename文字列ファイルへのパス。

Settings > String Comparisons

Case Insensitive (A == a)

構文Comparisons are case insensitive
コメント文字列の比較演算で大文字と小文字を区別しないようにします。
Comparisons are case insensitive.

Case Sensitive (A < a)

構文Comparisons are case sensitive
コメント文字列の比較演算で大文字と小文字を区別するようにします。
Comparisons are case sensitive

Settings>Search Mode

Literal

構文Disable wildcards
コメント文字列の比較演算でワイルドカードを使用しないようにします。
Disable wildcards

Wildcards

構文Enable wildcards
コメント文字列の比較演算でワイルドカードを使用するようにします。literal search よりも少し遅くなりますが、1文字にマッチする ? や複数文字にマッチする * を使用できます。
Enable wildcards

数式

Get string

構文string$(szObject)
コメントソース文字列を返します。
string$("String Parser")
引数引数説明
szObject文字列オブジェクト名。

Get length of string

構文length(szObject)
コメント文字列の長さを返します。*3
length("String Parser")
引数引数説明
szObject文字列オブジェクト名。

Set string, return ""

構文set$(szObject, szString)
コメントソース文字列を変更し、空文字列を返します。この数式はアクションなしにソース文字列を変更したい場合に、他の数式の頭に加えて使えます。空文字列を返すので組み込まれた文字列を変更することはありません。
set$("String Parser", "new source string")
引数引数説明
szObject文字列オブジェクト名。
szString文字列任意のテキスト。

Set string, return 0

構文set(szObject, szString)
コメントソース文字列を変更し、0 を返します。の数式はアクションなしにソース文字列を変更したい場合に、他の数式の頭に加えて使えます。0 を返すので加えられた値を変更することはありません。
set("String Parser", "new source string")
引数引数説明
szObject文字列オブジェクト名。
szString文字列任意のテキスト。

Substrings

Left substring

構文leftstr$(szObject, nBytes)
コメント文字列の文頭から nBytes 個の文字列を返します。
leftstr$("String Parser", 3)
引数引数説明
szObject文字列オブジェクト名。
nBytes整数値バイト数または文字数

Right substring

構文rightstr$(szObject, nBytes)
コメント文字列の文末から nBytes 個の文字列を返します。
rightstr$("String Parser", 3)
引数引数説明
szObject文字列オブジェクト名。
nBytes整数値バイト数または文字数

Middle substring

構文midstr$(szObject, nStart, nBytes)
コメントnStart から始まる nBytes の長さのサブ文字列を返します。ソース文字列の末尾を過ぎるようなサブ文字列を取得しようとすると空文字列を返します。
midstr$("String Parser", 4, 2)
引数引数説明
szObject文字列オブジェクト名。
nStart整数値始める位置。
nBytes整数値バイト数または文字数

Get number of substrings

構文numberOfSub(szObject, szFind)
コメント指定したサブ文字列が出現する数を返します。この関数はワイルドカードが使えます。
numberOfSub("String Parser", "hello")
引数引数説明
szObject文字列オブジェクト名。
szFind文字列探すサブ文字列。

Get index of substring

構文indexOfSub(szObject, szFind, nCount)
コメント指定したサブ文字列がnCount番目に出現する位置を返します。この関数はワイルドカードが使えます。
indexOfSub("String Parser", "hey", 1)
引数引数説明
szObject文字列オブジェクト名。
szFind文字列探すサブ文字列。
nCount整数値nCount番目に出現。

Get index of first substring

構文firstSub(szObject, szFind)
コメント指定したサブ文字列が最初に出現する位置を返します。この関数はワイルドカードが使えます。
firstSub("String Parser", "hey")
引数引数説明
szObject文字列オブジェクト名。
szFind文字列探すサブ文字列。

Get index of last substring

構文lastSub(szObject, szFind)
コメント指定したサブ文字列が最後に出現する位置を返します。この関数はワイルドカードが使えます。
lastSub("String Parser", "hey")
引数引数説明
szObject文字列オブジェクト名。
szFind文字列探すサブ文字列。

Remove substrings

構文remove$(szObject, szFind)
コメント指定したサブ文字列を全て削除した文字列を返します。この関数はワイルドカードが使えます。
remove$("String Parser", "guys")
引数引数説明
szObject文字列オブジェクト名。
szFind文字列探すサブ文字列。

Replace substrings

構文replace$(szObject, szFind, szNew)
コメント指定したサブ文字列を全て新しいサブ文字列に置換した文字列を返します。この関数はワイルドカードが使えます。
replace$("String Parser", "-old-", "new")
引数引数説明
szObject文字列オブジェクト名。
szFind文字列探すサブ文字列。
szNew文字列新しいサブ文字列。

Insert substring

構文insert$(szObject, szNew, nStart)
コメント指定した位置に指定したサブ文字列を挿入した文字列を返します。
insert$("String Parser", "nn", 3)
引数引数説明
szObject文字列オブジェクト名。
szNew文字列新しいサブ文字列。
nStart整数値始める位置。

Transform

Reverse string

構文reverse$(szObject)
コメント反転させた文字列を返します。最初の文字は最後になり、最後の文字は最初にきます。*4
reverse$("String Parser")
引数引数説明
szObject文字列オブジェクト名。

Uppercase string

構文uppercase$(szObject)
コメント全て大文字にした文字列を返します。
uppercase$("String Parser")
引数引数説明
szObject文字列オブジェクト名。

Lowercase string

構文lowercase$(szObject)
コメント全て小文字にした文字列を返します。
lowercase$("String Parser")
引数引数説明
szObject文字列オブジェクト名。

URL Encoded string

構文urlEncode$(szObject)
コメントURL で無効な文字をエスケープしてURLで読み込めるようにした文字列を返します。*5
urlEncode$("String Parser")
引数引数説明
szObject文字列オブジェクト名。

ASCII

Get ASCII character

構文chr$(szObject, nASCII)
コメント指定した10進数値を置き換えたASCII文字を返します。
chr$("String Parser", 60)
引数引数説明
szObject文字列オブジェクト名。
nASCII整数値ASCII文字にしたいASCII番号

Get ASCII value

構文asc(szObject, szASCII)
コメント指定したASCII文字を数値に置き換えたものを返します。
asc("String Parser", "c")
引数引数説明
szObject文字列オブジェクト名。
szASCII文字列ASCII文字列、最初の1文字だけが計算されます。

Get ASCII value list

構文ascList$(szObject, szDelimiter)
コメントソース文字列の文字のASCII番号を一つずつ指定した区切り記号で区切ってリストにした文字列を返します。
ascList$("String Parser", ",")
引数引数説明
szObject文字列オブジェクト名。
szDelimiter文字列区切り記号。トークン(サブ文字列)の区切りに使う文字列。

List Tokenizing > Delimiters

Get number of delimiters

構文numberOfDelims(szObject)
コメント現在の区切り文字の数を返します。
numberOfDelims("String Parser")
引数引数説明
szObject文字列オブジェクト名。

Get delimiter

構文getDelim$(szObject, nIndex)
コメント区切り記号配列の指定したインデックスにある区切り記号を返します。
getDelim$("String Parser", 0)
引数引数説明
szObject文字列オブジェクト名。
nIndex整数値リストのインデックス番号。

Get delimiter index

構文getDelimIndex(szObject, szDelimiter)
コメント指定した区切り記号の区切り記号配列内のインデックスを返します。
getDelimIndex("String Parser", " ")
引数引数説明
szObject文字列オブジェクト名。
szDelimiter文字列区切り記号。トークン(サブ文字列)の区切りに使う文字列。

Get default delimiter

構文getDefDelim$(szObject)
コメントデフォルトの区切り文字を返します。
getDefDelim$("String Parser")
引数引数説明
szObject文字列オブジェクト名。

Get default delimiter index

構文getDefDelimIndex(szObject)
コメントデフォルトの区切り文字のインデックスを返します。
getDefDelimIndex("String Parser")
引数引数説明
szObject文字列オブジェクト名。

List Tokenizing

Get number of elements

構文listCount(szObject)
コメントリストの要素の数を返します。
listCount("String Parser")
引数引数説明
szObject文字列オブジェクト名。

Set element

構文listSetAt$(szObject, szElement, nIndex)
コメント指定した位置を指定した要素で置き換えたリストを返します。
listSetAt$("String Parser", "Sean", 3)
引数引数説明
szObject文字列オブジェクト名。
szElement文字列リストの要素となる文字列、トークン(またはサブ文字列)と呼ばれる。要素は区切り文字によって区切られています。
nIndex整数値リストのインデックス番号。

Insert element

構文listInsertAt$(szObject, szElement, nIndex)
コメント指定した位置に指定した要素を挿入したリストを返します。
listInsertAt$("String Parser", "Sean", 1)
引数引数説明
szObject文字列オブジェクト名。
szElement文字列リストの要素となる文字列、トークン(またはサブ文字列)と呼ばれる。要素は区切り文字によって区切られています。
nIndex整数値リストのインデックス番号。

Append element

構文listAppend$(szObject, szElement)
コメント指定した要素を末尾に追加したリストを返します。
listAppend$("String Parser", "testing")
引数引数説明
szObject文字列オブジェクト名。
szElement文字列リストの要素となる文字列、トークン(またはサブ文字列)と呼ばれる。要素は区切り文字によって区切られています。

Prepend element

構文listPrepend$(szObject, szElement)
コメント指定した要素を先頭に追加したリストを返します。
listPrepend$("String Parser", "tested!")
引数引数説明
szObject文字列オブジェクト名。
szElement文字列リストの要素となる文字列、トークン(またはサブ文字列)と呼ばれる。要素は区切り文字によって区切られています。

Get element

構文listGetAt$(szObject, nIndex)
コメントリストの指定した位置の要素を返します。
listGetAt$("String Parser", 9)
引数引数説明
szObject文字列オブジェクト名。
nIndex整数値リストのインデックス番号。

Get first element

構文listFirst$(szObject)
コメントリストの先頭の要素を返します。
listFirst$("String Parser")
引数引数説明
szObject文字列オブジェクト名。

Get last element

構文listLast$(szObject)
コメントリストの末尾の要素を返します。
listLast$("String Parser")
引数引数説明
szObject文字列オブジェクト名。

Find element matching

構文listFind(szObject, szFind, nCount)
コメント指定した文字列がnCount番目に現れる位置のインデックスを返します。探す文字列は要素と完全一致でなければなりません。この関数はワイルドカードが使えます。
listFind("String Parser", "b*ing", 1)
引数引数説明
szObject文字列オブジェクト名。
szFind文字列探すサブ文字列。
nCount整数値nCount番目に出現。

Find element containing

構文listContains(szObject, szFind, nCount)
コメント指定したサブ文字列含まれる要素がnCount番目に現れる位置のインデックスを返します。要素に部分一致すればマッチします。この関数はワイルドカードが使えます。
listContains("String Parser, "Hey", 2)
引数引数説明
szObject文字列オブジェクト名。
szFind文字列探すサブ文字列。
nCount整数値nCount番目に出現。

Delete element

構文listDeleteAt$(szObject, nIndex)
コメント指定した要素を削除したリストを返します。
listDeleteAt$("String Parser", 7)
引数引数説明
szObject文字列オブジェクト名。
nIndex整数値リストのインデックス番号。

Swap elements

構文listSwap$(szObject, nIndex, nIndex2)
コメント2つの指定した要素を入れ替えたリストを返します。
listSwap$("String Parser", 2, 4)
引数引数説明
szObject文字列オブジェクト名。
nIndex整数値リストのインデックス番号。
nIndex2整数値リストのインデックス番号。

Sort elements ascending

構文listSortAsc$(szObject)
コメント要素を昇順に並べ替えたリストを返します。
listSortAsc$("String Parser")
引数引数説明
szObject文字列オブジェクト名。

Sort elements descending

構文listSortDesc$(szObject)
コメント要素を降順に並べ替えたリストを返します。
listSortDesc$("String Parser")
引数引数説明
szObject文字列オブジェクト名。

Change delimiters

構文listChangeDelims$(szObject, szDelimiter)
コメント現行の全ての区切り記号を指定した区切り記号に置き換えたリストを返します。指定する区切り記号は現行の区切り記号でなくても構いません。
listChangeDelims$("String Parser", "+")
引数引数説明
szObject文字列オブジェクト名。
szDelimiter文字列区切り記号。トークン(サブ文字列)の区切りに使う文字列。

Filters

Get MD5 Signature

構文mdFive$(szObject)
コメントソース文字列の32バイト16進数MD5署名を返します。MD5署名は、非可逆ハッシュアルゴリズムを用いて生成されたユニークな文字列であり、文字列やバイナリが変更されていない証明になります。
mdFive$("String Parser")
引数引数説明
szObject文字列オブジェクト名。

使用方法

CSVとして読み込みたい場合

CSVとして読み込みたい場合は先にデリミタを指定する
デリミタ指定してからCSVとしてロードすれば読めるはず

  • 1:デリミタ指定
  • 2:CSVをロード
  • 3:お好きな処理

*1 2バイト文字には対応していません。
*2 あらかじめデフォルトの区切り記号を設定しておかないと強制終了します。
*3 2バイト文字は2文字に数えられます。
*4 1バイトを1文字としているので、当然、2バイト文字は正しく反転されません。
*5 2バイト文字には対応していません。