2012年1月17日火曜日

文字列の幅

ruby 1.9 で文字列の幅を調べるベタなメソッドを作った。

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

コメントを投稿