AppleScriptで文字列を処理する(1)

 備忘録として、文字列を扱うときにつまずきやすい点をいくつか挙げておきます。

文字列の属性は「string」

 AppleScriptでは、文字列を表すときは" "で囲みます。
 " "で囲まれた文字列は「string」という属性を持ちます。

itemとcharacter, word, paragraphとの関係

 AppleScriptで文字列を変数に入れると、通常は「list」になります。
 listとは、itemの集まりで

{"I", " ", "l", "o", "v", "e", " ", "y", "o", "u"}

 のように文字列の要素がばらばらのアイテムにリストアップされたものを指します。

 文字列は、character, word, paragraphという単位によって扱われます。
 文字列がどう区切られて「item」になるかは、テキストを文字(character) の集まりと見なすか、単語(word)の集まりと見なすか、段落(paragraph)の集まりと見なすかによって、異なります。
 たとえばデータをcharacter単位で次のように作るとします。

set dat to characters of "I love you"

 この場合、datの中身は

{"I", " ", "l", "o", "v", "e", " ", "y", "o", "u"}

 となり、item 3 of datは "l"になります。

 いっぽう、データをword単位で

set dat to words of "I love you"

として作ると、datの中身は

{"I", "love", "you"}

となり、item 3 of datは "you"になります。

日本語ではwordをどう数えるか

 日本語には分かち書きがありません。AppleScriptは単語をどこで切っているのでしょうか?
 どうやら、日本語を処理する場合、AppleScriptでは、句読点やカギカッコ、文字種(ひらがな、カタカナ、漢字、英数字)の変わり目がwordの区切れめと見なされるようです。

試しに以下のようなスクリプトを実行してみて下さい。

set dat to words of "日本語のお勉強"
display dialog item 2 of dat

 結果は「のお」となります。
 句読点やカギカッコを入れるとどうなるでしょう。

set dat to words of "日本語の、「お勉強」"
display dialog item 3 of dat

 結果は「お」となります。句読点やカギカッコは区切れ文字として扱われ、itemには入りません。

(2008.08.06)

to Index