GameSprit

自転車やMac・AppleScript、映画・小説やドラマのレビュー、備忘メモ・クイズなどを置いています。

AppleScript - 文字列操作

2006-10-23 23:05:51 | AppleScript
Mac OS X Tiger (10.4.8) on IntelMac 上の AppleScript で文字列操作のテストをしてみました。

フォルダをたどり、アプリケーション - AppleScript - スクリプトエディタ(.app) を使って、
『あした、晴れたら、若洲に、釣りに行きます』という例文を操作します。

"、"(読点)で区切った単位に分けます。『あした』、『晴れたら』、『若洲に』、『釣りに行きます』の4つの要素に分かれるはずです。試しに1つめの『あした』を変数に格納してダイアローグに表示してみます。



set orgBunsho to "あした、晴れたら、若洲に、釣りに行きます" -- 変数orgBunsho に格納

set org_delimi to text item delimiters of AppleScript -- オリジナルの区切り文字をとっておく

set text item delimiters of AppleScript to "、" -- "、"で区切る
set bun1 to text item 1 of orgBunsho -- 1つめの『あした』を変数bun1 に格納


set text item delimiters of AppleScript to org_delimi -- 操作終了後にオリジナルの区切り文字に戻す

display dialog bun1 -- 変数bun1 の内容を表示





次に、"、"(読点)で区切った後いくつに分かれるか、取得してみます。『あした』、『晴れたら』、『若洲に』、『釣りに行きます』の4つなので、要素数『4』を取得したいのです。リストの要素数を調べる count を使ってみます。


set orgBunsho to "あした、晴れたら、若洲に、釣りに行きます" -- 変数orgBunsho に格納
set org_delimi to text item delimiters of AppleScript -- オリジナルの区切り文字をとっておく
set text item delimiters of AppleScript to "、" -- "、"で区切る

set num to count orgBunsho -- 要素数を調べる

set text item delimiters of AppleScript to org_delimi -- 操作終了後にオリジナルの区切り文字に戻す
display dialog num -- 変数num の内容を表示




要素数『20』でした。逆算すると"、"を含む全文字数:20を取得していました。
結局、目的の『4』を得るには次のように text item of ~ とします。

set num to count text item of orgBunsho





次に、thelist というリストを作って『あした』、『晴れたら』、『若洲に』、『釣りに行きます』の4つをリストに格納してみます。要素数が4のリストを作って格納してもいいのですが、応用が利くようにリストの要素数が分からない場合を想定してみます。空(要素数が0)のリストを作って、要素があればリストを1つずつ増やしてその要素をリストに格納します。
この方法のほかにもっと動作速度が速い方法があるかも知れません。

set thelist to {} -- 空のリストを作成
repeat with i from 1 to num -- 1 ~ Num (4です)回繰り返し処理する
set end of thelist to i -- 項目があればリストの要素数を1つ増やす
set item i of thelist to text item i of orgBunsho -- 項目を順にリストに格納する
end repeat

リストの最後の要素がなにかみてみましょう。『釣りに行きます』が格納されているのが分かります。




ここまでのソースは次の通りです。

set orgBunsho to "あした、晴れたら、若洲に、釣りに行きます" -- 変数orgBunsho に格納

set org_delimi to text item delimiters of AppleScript -- オリジナルの区切り文字をとっておく

set text item delimiters of AppleScript to "、" -- "、"で区切る

set num to count text item of orgBunsho -- "、"で区切られた「4」になる

set thelist to {}
repeat with i from 1 to num
set end of thelist to i
set item i of thelist to text item i of orgBunsho
end repeat

set text item delimiters of AppleScript to org_delimi -- 操作終了後にオリジナルの区切り文字に戻す
display dialog text item i of orgBunsho as string -- リストの最後の要素を表示



-----
Mac OS X Tiger (10.4.8) on Mac mini (Intel)



最新の画像もっと見る

1 Comments

コメント日が  古い順  |   新しい順
はじめまして (midore)
2006-10-24 23:39:04
初めまして。こんばんわ。

こんな感じでもできます。よ。



set str to "明日、晴れたら、海に釣りにいきます。"

set my_answer to str -- あえてstrと同じにしてます。



set my_weather to "晴れ"

if my_weather is in str then

 --指定した文字列が含まれていたら、

display dialog my_answer

end
返信する

post a comment

ブログ作成者から承認されるまでコメントは反映されません。