« ユーザースタイルシートを使用してみる | メイン | アルファベットの大文字を小文字に変換する »

デリミタを使用して文字列を変換する

ファイル名の英字を小文字に変換したいとおもい探ってみました。
このあたりにあるように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の魔法(なんてあったかな?)のような説明でした。

ひとつ前の投稿は「ユーザースタイルシートを使用してみる」です。
次の投稿は「アルファベットの大文字を小文字に変換する」です。

トラックバック

このエントリーのトラックバックURL:
http://www.xillion.net/mova/mt-tb.cgi/261

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2008年01月12日 18:37に投稿されたエントリーのページです。

メインページアーカイブページも見てください。

Powered by
Movable Type 3.34