« デリミタを使用して文字列を変換する | メイン | XillionWikiサイト »

アルファベットの大文字を小文字に変換する

デリミタを使わないロジックでの置換を考えました。
文字コードによる置換です。
"A"の文字コードは65で、"a"は97です。順にZ(z)までそれぞれインクリメントされていきます。
ということは大文字のコード値 + 32で小文字のコード値が取得できます。
あとは簡単です。
コード値と実際の文字をコンバートする関数を見つければよいのです。
多分あると思って探したらビンゴしました。
文字をコードにするのがASCII Characterで、コードを文字にするのがASCII Numberです。

でこんなコードを作成しました。
lowercase2.scpt


on lowerCase(myString)
    set myStringConv to ""
    set i to 1
    repeat
        try
            set myChar to character i of myString
        on error
            exit repeat
        end try
        set myCharNum to ASCII number myChar
        if (myCharNum > 64) and (myCharNum < 91) then
            set myStringConv to myStringConv & (ASCII character (myCharNum + 32))
        else
            set myStringConv to myStringConv & myChar
        end if
        set i to i + 1
    end repeat
    return myStringConv
end lowerCase

変換する文字コードの範囲を見ていますが、2バイト文字はどうなるかよくわかりません。
文字列から1文字取り出して、2バイト文字の場合、先頭の1バイト分のコードになるとおもうのですが、うまく行かないパターンがあるのかはよくわかりません。

ひとつ前の投稿は「デリミタを使用して文字列を変換する」です。
次の投稿は「XillionWikiサイト」です。

トラックバック

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

コメントを投稿

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

About

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

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

Powered by
Movable Type 3.34