前のページ 次のページ 目次

10. 日本語の取り扱い

10.1 日本語の識別子は使えますか

デフォルトのEUCでは,英小文字に相当するものとして使えます. ポータビリティが低いのでおすすめできません.識別子では ありませんが,Hashのキーには当然使えますね.

10.2 日本語を含む文字列から1文字ずつ文字列を取り出すにはどうしますか

split(//)やscan(/./)を使います.

10.3 tr("あ","a")がうまく動きません

組込みのtrは,バイトごとに変換します.require "jcode"とすると, 日本語を文字ごとに扱えます.

10.4 ひらがなをソートするにはどうしますか

require "jcode"
a = "ぁぃぅぇぉがぎぐげござじずぜぞだぢづでど"
a.concat "ばびぶべぼぱぴぷぺぽゃゅょっゎ"
b = "あいうえおかきくけこさしすせそたちつてと"
b.concat "はひふへほはひふへほやゆよつわ"
ary.filter{|l| [l.tr(a,b), l]}.sort.filter{|e| e[1]}

10.5 SJISの機種依存コード84BF から 889Fまでを空白に置き換えたいのですが

正規表現で[あ-ん]というような範囲表現が使えますが,機種依存コードを直接 ここにいれてしまうのは,プログラムの可読性を損ないます.
gsub(/#{"[\x84\xbf-\x88\x9f]"}/s, ' ')
とすると,2バイトコードの範囲をうまく表現して,空白に置き換えることが できます.
前のページ 次のページ 目次