これは RuntimeRevolution 1.1.1 のヘルプにある文書を邦訳したものです。この文書の文責はUDIにあり、またUDIはこの文書についての一切の債務を負いません。 間違いがありましたら eudio@chabashira.co.jp までお知らせ下さい。この文書は必要と思われる時に適宜アップデートされます。
Help -> Revolution Documantation -> Development Guide -> Text and Data Proccessing -> About... chunk expressions
About chunk expressions
チャンク表現:
==============
参照:
--------------
character keyword, delete chunk command, item keyword, itemDelimiter property, line keyword, token keyword, word keyword
チャンク表現とは、コンテナ内の特定の位置にあるテキストを、行やワードを使って記述する方法である。
このトピックでは、チャンク指定の構文と、チャンク表現による位置指定で利用できるチャンクタイプについて解説する。
このトピックを充分理解するためには、簡単なスクリプトの書き方を理解している必要がある。もし 'Getting Started' チュートリアルが済んでいるなら、そのための知識は得られている。
Contents:
What is a Chunk?
Chunk Types
Specifying a Chunk
Specifying a Range
Checking the Existence of a Chunk
What is a Chunk?
チャンクとは何か?
チャンクとは、コンテナ内の特定の位置にあるテキストを記述するものである。チャンク表現を使って、ワードや、行や、指定したデリミタ(区切り文字)でコンテナの任意の部分を参照することが出来る。
チャンクを使えば、コンテナ内のどんな位置でも表現することが出来る。例えばこれは add コマンドを使って、フィールド内の特定の行に数値を加えるものである(訳注:恐らく原文の誤り。行ではなくワードに加えています):
add 1 to word 3 of field "Numbers"またチャンク表現を使って、コンテナの任意の位置のデータを置き換え( put コマンドで)たり、削除( delete-チャンク コマンドで)することが出来る。
get char 2 of "ABC" -- "B" を表す get word 4 of "This is a test" -- "test" を表す get line 7 of myTestData put "A" into char 2 of myVariableもし存在しないチャンク番号を指定すると、そのチャンク表現の値は empty になる。例えば char 7 of "AB" という表現は、empty である。
get item -1 of "feather, ball, cap" -- "cap" が得られる get char -3 of "ABCD" -- "B" が得られる(訳注: HyperTalk では、チャンク 0、-1、-2、-3、-4 に別の意味が割り当てられています)
put "7" into last char of "1085" -- "1087" になる他のチャンク表現を組み合わせて、より複雑なチャンク表現を作ることが出来る。例えば word 4 of item 250 という文は、250行目の中の4番目のワードを指す。(訳注:恐らく原文の誤り)
char 7 of word 3 of myValue word 9 of item 2 of myValue last char of word 8 of line 4 of myValueしかしこれらは間違ったチャンク表現である。
word 8 of char 2 of myValue -- char に word が含まれていることはない item 9 of first word of myValue -- word に item が含まれていることはない line 3 of last item of myValue -- item に line が含まれていることはない
get char 1 to 3 of "ABCD" -- "ABC" を表す get word 2 to -1 of myValue -- 2番目のワードから最後のワードまで put it into line 7 to 21 of myValue -- 置換範囲を指定する場合は、その最初と最後に指定するチャンクは同じタイプでなければならない。また最初のチャンクは最後のチャンクよりも前になければならない。これらは間違ったチャンク表現である。
char 3 to 1 of myValue -- 最初の方が最後よりも大きい char -1 to -4 of myValue -- 後ろから数えているので、最後の方が前にあるマイナスの値を範囲指定で使う場合は、-x は -x+1 よりも前になければならない。例えば -1 は -2 よりも大きく、4 は -7 よりも大きい。範囲指定をする場合は、大きな数字が最後に来るようにする必要がある。
the number of lines in myVariableチャンク表現をネストさせて、大きなチャンクタイプの中の小さなチャンクタイプを数えることができる:
the number of chars of item 10 of myVariableis among オペレータは、チャンク表現が大きな値の中にあるかを調べる。例えば大きな文字列の中に word 'free' があるかどうかを調べるには、is among オペレータを利用する:
"free" is among the words of "Live free or die" -- true "free" is among the words of "Unfree world" -- false2番目の例で 'free' という文字列が値の中に見つからずに false になるのは、それが大きなワードの一部であり、独立したワードではないからである。
get offset("C","ABC") -- 3 が返ってくるlineOffset、itemOffset、wordOffset 関数を使えば、同じようにして、それがどの行、アイテム、ワードに含まれているかを調べることも出来る。