全角を2文字、半角を1文字として数える方法

いい感じに全角を2文字、半角を1文字として数える方法を見つけたのでメモ

"あいうえおaiueo".each_char.map{|c| c.ascii_only? ? 1 : 2}.inject(:+) || 0
=> 15

細かいところまでちゃんと数えるなら『unicode-display_width』のgemを使った方がいいと思う

 

参照: http://programming.ironsand.net/2014/get-string-size-considering-double-width-and-normal-width-ruby/