チャンクタイプ
チャンク表現は、次のすべてのチャンクタイプで作業することを可能にします:
| タイプ | 定義 |
|---|---|
| characters | テキスト内の個々の文字 |
| words | テキスト内の任意の量の空白(スペース、タブ、リターン)で区切られた単語 |
| lines | いくつかの標準的な行末(CR、LF、CRLFなど)で区切られた段落 |
| text items | カンマで区切られたテキストの部分 |
| list items | リスト内の個々のアイテム |
| bytes | バイナリデータ内のバイト |
| occurrences | 定義されたパターンのテキスト一致 |
| matches | 定義されたパターンとそのキャプチャグループのテキスト一致とテキスト範囲 |
さらに、テキストアイテム、行、単語を識別するために使用されるカスタムデリミタを指定することができ、さらに高い機能性を提供します。これら3つのテキストチャンクタイプはそれぞれ独特のタイプのデリミタを持ち、テキストアイテムは単一のテキスト文字列で区切られ、行はテキスト文字列のリストで区切られ、単語は文字セットからの任意の数と組み合わせの文字で区切られます。
Characters
最も単純なタイプのチャンクはキャラクターチャンクです。キャラクターはテキストの一文字で、表示文字と非表示文字(タブ、キャリッジリターン、ラインフィード文字などのコントロール文字を含む)の両方を含みます。characterはcharと略すことができます。
put "The quick brown fox" into animal
put character 1 of animal--> T
put the last char of animal --> x
put chars 3 to 7 of animal --> e qui
Words
単一の単語は、空白文字を含まない文字列、または引用符で囲まれた文字列として定義されます。単語の範囲には、指定された最初の単語から最後の単語までのすべての文字、および間にあるすべての単語と空白が含まれます。空白文字は、スペース、タブ、およびリターン(改行)です。
put "Sometimes you feel like a nut; sometimes you don’t." into slogan
put the second word of slogan --> you
put word 6 of slogan --> nut;
put words 1 to 3 of slogan --> Sometimes you feel
引用符で囲まれたフレーズは、通常は引用符を含む単一の単語として扱われます:
put <<Mary said "Good day" to John.>> into sentence
put the third word of sentence --> "Good day"
関連するローカルおよびグローバルプロパティ
SenseTalkは、チャンク内の単語を操作する際の側面を管理するために使用できるローカルおよびグローバルプロパティを含みます。単語を識別するために使用される文字セットは、the wordDelimiterローカルプロパティまたはthe defaultWordDelimiterグローバルプロパティを設定することで、Space、Tab、およびReturn以外の ものに変更することができます。引用符付き単語を識別するために使用される引用符文字(または単語引用が完全に無効化されるかどうか)は、the wordQuotesローカルプロパティまたはthe defaultWordQuotesグローバルプロパティを使用して指定できます。
これらのローカルプロパティはチャンク表現のローカルおよびグローバルプロパティで定義されています:
the wordDelimiter, the defaultWordDelimiterthe wordQuotes, the defaultWordQuotes
行
行チャンク式を使用すると、対象テキスト内の1つ以上の行または段落を指定できます。行は初めて定義されるとき、標準的な行末文字の間の文字として定義されます。
put "line 1" & return & "line 2" & return & "line 3" into text
put the second line of text --> line 2
put line 6 of text --> ""
put lines 2 to 3 of text --> line 2 & return & line 3
--> line 2
--> line 3
関連するローカルおよびグローバルプロパティ
SenseTalkは、チャンク内の行を操作する側面を管理するために使用できる2つのプロパティを含みます。行として定義するための行末(デリミタ文字列)のセットは、the lineDelimiterローカルプロパティを設定することでデフォルト以外のものに変更することができます。the lineDelimiterを空に設定すると、デフォルトリストに戻ります。
the defaultLineDelimiterグローバルプロパティはデフォルトの行デリミタセットを定義します。このプロパティは初めて設定されたときに、CRLF、Return、CarriageReturn、LineSeparator、ParagraphSeparatorに設定されます。
これらのプロパティはチャンク表現のローカルおよびグローバルプロパティで定義されています:
the lineDelimiter, the defaultLineDelimiter
テキスト項目
テキスト内の項目は通常、コンマ間のテキスト部分として定義されます:
put "A man, a plan, a canal. Panama!" into palindrome
put item 2 of palindrome --> " a plan"
区切り(デリミタ)文字は、the itemDelimiterプロパティを設定することでコンマ以外の何かに指定できます。the itemDelimiterのデフォルト値は、the defaultItemDelimiterグローバルプロパティによって決まります。これら2つのプロパティはチャンク表現のローカルおよびグローバルプロパティで定義されています:
the itemDelimiter, the defaultItemDelimiter
リスト項目
itemsという単語は、リスト内の要素を指すこともあります。
put ["red", "green", "blue"] into colors
put item 2 of colors -- green
SenseTalkは、値がリストであるかどうかによって、itemがテキ スト項目を指すのかリスト項目を指すのかを判断します。値がリスト内の項目を指す場合、SenseTalkは自動的に参照がリスト項目であると仮定し、テキスト項目ではないとします。ただし、itemDelimiterが“”(空)に設定されている場合、itemsはテキスト項目ではなくリスト項目を指すでしょう。項目の取り扱い方法を制御する必要がある場合、一般的なitemsの代わりにlist itemsまたはtext itemsを明示的に指定することができます。これは、以下のように個々の項目に値を入れてリストを作成しようとしている場合に特に重要です:
put 1 into myText -- 1
put 2 into item 2 of myText
put mytext -- 1,2
上記のコードは、中央の文字がitemDelimiterであるテキスト文字列を生成します(itemDelimiterがemptyに設定されていない場合)。テキストではなくリストを生成するには、list itemを指定します:
put 1 into myList -- 1
put 2 into list item 2 of myList
put myList -- [1,2]
リストの操作に関する詳細はリストおよびプロパティリストを参照してください。