青山です。
日本語の部分だけを ' ' に置換するとさらに速くなるので、こんなかんじと
か。GC::start も追加。
class String
def jlength
GC::start
if self =~ /[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]/n
l = self.gsub(/[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]/n, ' ').length
elsif self =~ /[\xa1-\xfe][\xa1-\xfe]/n
l = self.gsub(/[\xa1-\xfe][\xa1-\xfe]/n, ' ').length
end
GC::start
l
end
end
--
青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>