ファイル名の英字を小文字に変換したいとおもい探ってみました。
このあたりにあるようにApplescriptのdelimiterと置換リストを使用する置換が一般的のらしいので、
上記サイトを参考にして大文字→小文字変換のサブルーチンを作成しました。
lowerCase1.scpt
on lowerCaseByDelimiter(myString)
set myStringConv to ""
set beforeList to {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N",
"O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
set afterList to {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
"o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}
set oldDel to text item delimiters of AppleScript
set i to 1
repeat with x in beforeList
set text item delimiters of AppleScript to x (1)
set mylist to every text item of myString (2)
set text item delimiters of AppleScript to item i of afterList (3)
set myString to mylist as string(4)
set i to i + 1
end repeat
set text item delimiters of AppleScript to oldDel
display alert myString
return
end lowerCaseByDelimiter
このスクリプトの動きがよくわからなかったので、alertなどで確認した内容をメモしておきます。
例として文字列”FARAO"を小文字に変換する場合を考えます。
まずbeforeLsitの要素をループさせています。
これは”A"→"a"、"B"→"b"・・というように、beforeLsitの項目で順に変換処理を行うためです。
(1)ではデリミタをセットしています。はじめは"A"がデリミタとなります。
(2)の部分ではデリミタで分割された文字列をリスト(myList)として保持します。"A"がデリミタなので、リストは
{"F","R","O"}となります。
(3)で変換後の文字をデリミタにセットします。
はじめは変数iが1になっているのでafterListの1個目のアイテム"a"がセットされることになります。
(4)の部分では分割したリスト{"F","R","O"}に区切り文字をつけて文字列として復元させています。そしてその文字列をもとの文字列(myString)に代入します。
"F" + 区切り文字:"a" + "R" + 区切り文字:"a" + "O"ということで"FaRaO"が生成されるのです。
あとはbeforeListの数だけ変換を繰り返します。
区切り文字が”F”となったときは先頭に区切り文字がくるので、リストは{"","aRaO"}というようにnullとして分割されます。
この後区切り文字を"f"と変えて連結すると"" + 区切り文字:"f" + "aRaO" で ”faRaO"となるのです。
『なるほど』でしょ。よくできています。
区切り文字が”O”となったときはどうでしょう。
もう簡単ですね。最後の区切り文字なので、リストは{"faRa",""}となります。
そしてこの後区切り文字を"o"と変えて連結すると"faRa" + 区切り文字:"o" + "" で ”faRao"となります。
しつこいですが、せっかくなので"R"の場合です。
リストは{"fa","ao"}となり小文字の"r"を区切りとして連結すると"farao"ができるのです。
まるでfaraoの魔法(なんてあったかな?)のような説明でした。