title: Wide module author: Kazuhiro Yoshida mailto: moriq.kazuhiro@nifty.ne.jp %href:wide.pi% is Pi source.(ShiftJIS) 1.Wide module 2 byte 文字と 1 byte 文字が混在する文字列に対して有効な操作を用意しました。 Wide は Regexp の日本語判別機能を活用しています。文字列の先頭から順に調べていくので,速度面でやや難があります。 1.1. Download %href:wide.rb% 1.1. はじめに Ruby は生まれた時から日本語に対する配慮がなされていましたので, 2 byte 文字に対する操作は簡単になっています。 しかし,文字コードがいまだ統一には程遠い現実からも分かるように, 2 byte 文字は本質的なところで複雑になっています。 Ruby は日本語に配慮していると言っても,やはり基本は ASCII 文字セットなのです。また,いわゆるバイナリを扱えるのも Ruby の利点であり,日本語だけに機能を特化するわけにもいきません。 というわけで,このような比較的簡単な module を用意することで,日本語処理をもっと楽にしようというわけです。 1.1.methods : wide_at(string, index) 文字列 string の位置 index が 2 byte 文字であるかどうか調べます。 2 byte 文字のとき 1 が返ります。 1 byte 文字のとき 0 が返ります。 : space?(dst, src) 文字列 dst と文字列 src を連結するときに空白が必要であるかどうか。 dst の末尾と src の先頭の文字が 2 byte 文字であれば false を返します。 dst の末尾もしくは src の先頭の文字が得られない場合には nil を返します。