ruby中中文字符串的截取
Thursday, April 27, 2006 4:02:15 AM
#File us_cutter.rb,Class USCutter powered by SawPad
require "iconv"
class USCutter
def initialize(your_charset="GBK")
@conv=Iconv.new("UTF-16",your_charset)
@reverse_conv=Iconv.new(your_charset,"UTF-16")
end
def cut(src,start,length)
p_start=start.class==Fixnum&&start>=0
p_length=length.class==Fixnum&&length>=0
return "" unless src&&p_start&&p_length
src_utf16=@conv.iconv(src)
cutted_src_utf_16=src_utf16[2*start+2,2*length]
@reverse_conv.iconv(cutted_src_utf_16)
end
end
将此class保存为"us_cutter.rb"放入ruby_install_dir/lib/ruby/1.8里面即可,其中:
- 构造函数中的唯一参数为你目前使用的编码,如"UTF-8","GBK"等
- cut函数中src为源字符串,start为起始字符位置(0-based),length为要截取的字符串长度
使用方法应该一目了然了:
u=USCutter.new("GBK")
s1="we love 中华人民共和国"
s2=u.cut(s1,0,10)
puts s1
puts s2
输出:
we love 中华人民共和国 we love 中华
有什么错误的地方欢迎回复本文讨论







Anonymous # Thursday, April 27, 2006 5:42:08 AM
SawPadsawpad # Thursday, April 27, 2006 5:47:00 AM
YuLimin # Saturday, November 25, 2006 4:51:01 AM
huifei # Monday, December 11, 2006 1:25:58 PM
dd.rb:1: uninitialized constant USCutter (NameError)