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 件のコメント:
コメントを投稿