デリミタを使わないロジックでの置換を考えました。
文字コードによる置換です。
"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バイト分のコードになるとおもうのですが、うまく行かないパターンがあるのかはよくわかりません。