演算子(Operators)

as, & (結合), = (等しい), /= (等しくない)
> (より大きい), < (より小さい), >= (以上), <= (以下)
contain, does not contain, is in, is not in
end with, does not end with
start with, does not start with

要素(Elements)

character番号
item番号
paragraph番号
text全要素範囲参照
text item番号
word番号

属性(Properties)

classクラス識別子[r/o]
値の属するクラス(text)
length整数[r/o]
含まれる文字数(numberと同じ)
number整数[r/o]
含まれる文字数(lengthと同じ)
quoted form文字列[r/o]
文字列の前後をクォート「'」でくくったもの
(Mac OS X 10.2以降)
id整数 | 整数リスト[r/o]
文字コード(Mac OS X 10.5以降)
POSIX path文字列[r/o]
/区切りのパス(Mac OS X10.1.2以降?)

解説(Note)

 文字をダブルクォーテーションで括った値。

 タブ文字など幾つかの特殊文字は変数として定義されており、エスケープ文字「\」との組み合わせでも書き表せる。
 詳しくは、文字変数(text variables)を参照してほしい。

 要素を指定して、文字列の一部を書き換えることは、残念ながらできず、つねに文字列全体を代入して書き換える必要がある。
 例えばtext itemなどで一旦リストに分解して書き変え、文字列に再変換するという、少々面倒な手続きが必要になる。

 textクラスはstringクラスの全くの同義語で、両方とも「文字列」を表す。自然な英語になるように使う以外の目的は無い。ちなみにtextの複数形もtextである。知らないとハマる時がある。

 文字列を比較演算子包含演算子で処理する場合、considering,ignoring構文で設定された特性が考慮される。
 文字列の比較は、NFKC Casefoldという正規化規則に従って行われる。
 そのため、"ぽいんと"と"ポイント"と"ポイント"と"㌽"は同じ内容と判断される。

 要素については、各以下の通りの特徴がある。
 characterは、文字一つ一つを表し、英字、日本語ともに一文字として取り出す。
 itemはcharacterの同義語。
 paragraphは、改行までの一行を表す(HyperTalkではline)
 要素のtext(strings)は、文字列の中の一部を指定し取り出すことができる。例3,4を参照してほしい。
 text itemはAppleScriptスクリプトオブジェクトの属性であるtext item delimitersによって区切られた文字列で、区切り文字を変えられることから、柔軟な文字列処理が行える。

 wordは、スペースで区切られた文字列を表す、日本語の場合は漢字とひらがな・カタカナの間や句読点でも区切られる。
 Mac OS X10.6以降は、もう少しそれっぽいところで日本語を区切ってくれる。

 as演算子によって、項目が一つのリスト、整数、実数、日付へ変換できる。
 整数、実数へ変換する場合は、文字列が数値だけで構成されている必要がある。
 日付に変換できるのは、日付の書式を持った文字列である必要があり、足りない部分は補完される(ということだが、確実に変換されるわけでは無い)

 quoted form属性は、AppleScript1.8.3(Mac OS X10.2)以降。

 id属性は、AppleScript2.0(10.5)以降。
 ユニコードとしての文字コードが整数で返る。文字が複数含まれる文字列の場合、整数のリストが返る。
 逆に文字コードから文字を生成することもでき、この際も整数のリストが使用できる。用例を参照。
 この変更で、ASCII characterおよびASCII number命令は不要となった。

【バグ情報】

 文字コードx00の文字をASCII number命令read命令を使って文字列に設定すると、高確率でフリーズやクラッシュを招くので要注意。
 文字列をwords等を使ってリストに分割する場合、およそ4千をこえる数に分割するとスタック溢れ等のエラーで停止する。
 MacOS9.1(だけかどうか正確には分からない)では、全要素指定をした場合、空リストが返る。

strings of "string"
--> {}

 quoted formは、文字列に「'」が含まれるとおかしな変換をしてしまう。「'」をエスケープするために「¥¥'」とするのはいいのだが、その前後にも「'」がついてしまうのだ。

quoted form of "it's"
--> "'it'¥¥''s'"

 Mac OS X 10.9.5ではquotedに関するバグは解消されていた。正確にどのバージョンで解消されたかは不明。

用例(Example)

  1. class of "text data"
  2. every word of "text data"
  3. text from character 4 to paragraph 1 of "text data"
  4. strings 1 thru 3 of "鳶嶋工房"
  5. "ポイント" is "㌽"
  6. set codeNumber to id of "鳶"
    string id codeNumber
※1-6 結果ウィンドウでResultを見て下さい。