[2001/02/27] by CozoH [2001/03/08] by るびきち
Stringクラスのメソッドを追加、再定義し、 日本語を意識した文字列処理を提供します。
*1[2001/03/08]るびきち:$KCODEを指定しないと結果がおかしいので注意。
require 'jcode' $KCODE='e' # 漢字コードをEUCに。Windowsでは 's' print 'abcdef'.tr( 'a-z', 'A-Z' ), "\n"
文字列中の各文字に対して繰り返します。 ブロックを指定せずに呼び出された時には、各文字の配列を返します。
例:
#!/usr/bin/env ruby $KCODE='e' require 'jcode' zstr='ABCDEF' p zstr.each_char zstr.each_char do |x| print "+#{x}+" end # => +A++B++C++D++E++F+
最後の文字が多バイト文字である文字列にマッチする正規表現を返します。 再定義されたString#succで内部的に使われます。
String#countの日本語対応版です。
例:
#!/usr/bin/env ruby $KCODE='e' zstr='ABCDEF' hogehoge='hogehoge' p zstr.count 'A' # => 7 ←これは正しくない p hogehoge.count "g" # => 2 require 'jcode' p zstr.jcount 'A' # => 1 p hogehoge.jcount "g" # => 2
String#lengthの日本語対応版です。
例:
#!/usr/bin/env ruby $KCODE='e' zstr='ABCDEF' hogehoge='hogehoge' p zstr.size # => 12 p hogehoge.size # => 8 require 'jcode' p zstr.jsize # => 6 p hogehoge.jsize # => 8
self
に多バイト文字が最初に現れる位置を返します。
多バイト文字が含まれていなければnil
を返します。
例:
#!/usr/bin/env ruby $KCODE='e' zstr='ABCDEF' hoge='hogehoge' require 'jcode' p zstr.mbchar? # => 0 p hoge.mbchar? # => nil
それぞれのメソッドに!
がついているものは破壊的メソッドです。
String#chopの日本語対応版です。
例:
#!/usr/bin/env ruby $KCODE='e' zstr='ABCDEF' hogehoge='hogehoge' p zstr.chop # => ABCDE\243 p hogehoge.chop # => hogehog require 'jcode' p zstr.chop # => ABCDE p hogehoge.chop # => hogehog
String#deleteの日本語対応版です。
例:
#!/usr/bin/env ruby $KCODE='e' zstr='ABCDEF' hogehoge='hogehoge' p zstr.delete "A" # => 唾津\306 p hogehoge.delete "e" # => hoghog require 'jcode' p zstr.delete "A" # => BCDEF p hogehoge.delete "e" # => hoghog
String#squeezeの日本語対応版です。
例:
#!/usr/bin/env ruby $KCODE='e' zstr='AABBCC' hogehoge='hhoge' p zstr.squeeze # => AABBCC p hogehoge.squeeze # => hoge require 'jcode' p zstr.squeeze # => ABC p hogehoge.squeeze # => hoge
String#succの日本語対応版です。
以下のような次の文字列を返します。
"あaあ".succ => "あaぃ" "rb".succ => "rc" "_紅玉".succ => "_紅桐"
従来のString#succは、
多バイト文字と半角文字が混在している文字列を
意図通りに処理することができません。
例えば上記のコードは、それぞれ
"あbあ"
、"sb"
、"_紘玉"
を返します。
なお、"99"
の次は"100"
になるのに対し、
"99"
の次は"100"
にはならないことに注意。
"Az"
や"zz"
も同様です。 *2
String#trの日本語対応版です。
例:
#!/usr/bin/env ruby $KCODE='e' zstr='AABBCC' hogehoge='hhoge' p zstr.tr('A-Z','A-Z') # => A疏疏汰汰蛋\303 p hogehoge.tr('a-z','A-Z') # => 旙旙\332 require 'jcode' p zstr.tr('A-Z','A-Z') # => AABBCC p hogehoge.tr('a-z','A-Z') # => HHOGE
String#tr_sの日本語対応版です。
irb(main):009:0> "foo".tr_s("o", "f") "ff" irb(main):010:0> require 'jcode'; $KCODE='e' "e" irb(main):011:0> "foo".tr_s("o","f") "foo" irb(main):012:0> "foo".tr_s("o", "f") "foo"
*1募集中
*2CozoH: このあたり、もっと正確で分かりやすい説明が欲しいです。私自身、よく分かっていないので。
*3[2001/03/09]るびきち:おっかしいなぁ
*4[ruby-list:31275]