mbstring 多バイト文字列のための String クラスの拡張ライブラリ version 0.1 吉田正人 - 概要 String クラスに不足している多バイト文字列に対応したメソッド を追加するライブラリです。一部 jcode.rb と重複するメソッドも あります。 Ruby-1.3 に対応しており,UTF-8 も扱えます。Ruby-1.2 では動作 しません。 - インストール UTF-8 対応した Ruby-1.3 専用です。Ruby-1.3.3-990507 以降の使用をおすすめします。 通常のモジュールインストールを行ってください。動的リンクに対 応している場合は以下の通りです。 ruby extconf.rb make make install - 使い方 ruby の make 時に静的にリンクしていない場合は, require "mbstring" としてから使用してください。String クラスが拡張されます。 メソッド mblength mbsize 文字列の文字数を返します。 length との違いは, ・ 多バイト文字を 1 文字として扱います each_mbchar {|char|...} 文字列中の各文字に対して繰り返します。 each_byte との違いは, ・ 多バイト文字を 1 文字として扱います ・ char は 1 文字を格納する文字列です mbchop! mbchop 文字列の最後の文字を取り除きます (終端が "\r\n" であれば 2 文字取り除きます)。 mbchop! は文字列そのものを変更します。 mbchop! は取り除く文字が無かった時には nilを返します。 chop!, chop との違いは, ・ 多バイト文字を 1 文字として扱います mbsubstr(start, length) start から長さ length だけ部分文字列を返します。 self[start, length] との違いは, ・ 多バイト文字を 1 文字として扱います ・ start は文字単位のオフセットです ・ length は文字数です mbreplace(start, length, val) start から長さ length の部分文字列を val に置き換えます。 self[start, length]=val との違いは, ・ 多バイト文字を 1 文字として扱います ・ start は文字単位のオフセットです ・ length は文字数です replace とは別物なので注意してください。 - 作った理由 拙作 XMLParser モジュールで DOM の文字列処理がバイト単位でし かできません。DOM に準拠するためには文字単位で処理するメソッ ドが必要でした。 最初はワイド文字列クラスを作るつもりだったのですが,wchar_t や locale の問題などかなり大変だということが分かったので, String クラスに多バイト文字対応メソッドを追加することにして しまいました。 - 問題点 ・ メソッド名が今一つ ・ reverse, squeeze など多バイト文字対応していないメソッドが残っている ・ Ruby に標準で入っていて欲しい - 権利 本拡張モジュールのほとんどのコードはまつもと ゆきひろさんの string.c を元にしています。 多バイト文字処理のための改造部分の著作権は吉田正人が保持します。 本拡張モジュールは,ruby 本体のライセンスにしたがって利用す ることができます。 - 作者 吉田正人 , - 履歴 May 13, 1999 version 0.1 最初のリリース