附加库

添加了require 'importenv'之后,就可以像操作全局变量一样来处理环境变量了。
用例

require 'importenv'
p $USER     # => "rubikitch" (自己的用户名)
$USER = "matz"
p ENV["USER"]   # => "matz"
p $USER     # => "matz" (*)

注意

在截止Ruby 1.6.2的版本中存在bug,会将输出变为自己的用户名。该bug在1.6.3中已被修正。
IO#nonblock?

  若self是非阻塞模式则返回真,若是阻塞模式则返回假。
IO#nonblock = bool

  若bool为真,则将self设为非阻塞模式,若是假则设为阻塞模式。
IO#nonblock(bool=true) { ... }

  在块的运行过程中,临时变更self的阻塞模式。若bool为真,则设为非阻塞模式,若为假则设为阻塞模式。
io/wait.so

IO#ready?

  若当前未发生阻塞且可进行读入操作的话,就返回真。否则返回 nil。若self到达EOF,则返回false 。
IO#wait([timeout = nil])

  在self变为可读入状态之前,保持阻塞状态。若self变为可读入状态,则返回self。

  若指定了timeout时,则会保持相应秒数的阻塞状态,超时后返回nil 。

  若self到达EOF,则返回false 。
ipaddr.rb

[ruby-src:lib/ipaddr.rb]

--> IPAddr
irb.rb Interactive Ruby (Ruby 的交互界面) 请参考[ruby-src:doc/irb/irb.rd.ja], [ruby-src:doc/irb/irb-tools.rd.ja]

irb.rb

--> [ruby-src:doc/irb/irb.rd.ja]
[2001/02/27] by CozoH [2001/03/08] by rubikitch
概要

对< href="../built-in-class/class_object_string.html">String类中的方法进行添加和重定义,使其能够自动识别和处理日语。
用例

[2001/03/08]rubikitch:请注意,必须正确设置$KCODE。

require 'jcode'
$KCODE='e' # 将汉字代码设为EUC。在Windows中是 's'
print 'abcdef'.tr( 'a-z', 'A-Z' ), "\n"

添加方法

each_char
each_char {|char| ... }

  为字符串中的各字符进行迭代操作。若不带块调用时,返回包含各字符的数组。

  例:

  #!/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+

end_regexp

  返回与尾字符是多字节字符的字符串相匹配的正则表达式。通常是在重定义过的String#succ中使用它。
jcount(str)

  它是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

jlength
jsize

  它是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

mbchar?

  返回self中首次出现多字节字符的位置。若不含多字节字符则返回nil。

  例:

  #!/usr/bin/env ruby
  $KCODE='e'
  zstr='ABCDEF'
  hoge='hogehoge'

  require 'jcode'

  p zstr.mbchar? # => 0
  p hoge.mbchar? # => nil

重定义方法

下列方法中,凡是方法名前面带!的都具有破环性。

chop
chop!

  它是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

delete(str)
delete!(str)

  它是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

squeeze([str])
squeeze!([str])

  它是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

succ
succ!

  它是String#succ的日語对应版。

  它返回下一个字符串,例如

  "あaあ".succ => "あaぃ"
  "rb".succ => "rc"
  "_紅玉".succ => "_紅桐"

  在遇到混有多字节字符和半角字符的字符串时,原来的String#succ并不能进行预期的处理。例如,它会把上面的字符串处理成"あbあ"、"sb"、"_紘玉"。

  另外请注意,"99"的下一个字符串是"100",但"99"的下一个字符串却不是"100"。而"Az"或"zz"也是一样。
tr(search, replace)
tr!(search, replace)

  它是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

tr_s(search, replace)
tr_s!(search, replace)

  它是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"