class String def width ascii_reg = /[\x00-\x7f]/ w = 0 self.each_char do |c| if c =~ ascii_reg w += 1 else w += 2 end end w end end
size だと漢字もASCII 文字も同じように数えるが、width はASCII 文字以外は 2 文字幅として数えるようにしている。ただそれだけ。
irb(main):068:0> "a漢字bcd".size => 6 irb(main):067:0> "a漢字bcd".width => 8
0 件のコメント:
コメントを投稿