何回か同じようなものを書いた気がしつつ、どこにやったか忘れてしまったのでメモ。Shift-JIS(というかWindows-31J)以外のことは気にしない。つか、1.8系でも半角カナとかは ljust しても期待した動作にならないんだから、気にせず bytesize であわせてくれてもいいのに、と思った今日この頃。
もしくは lbytejust とか?(命名センスゼロ)
関連
- http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/45623
- http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/45626
#! ruby -Ks # coding: Windows-31J puts "1234567890"*2 puts "|#{'abc'.ljust(10)}|" puts "|#{'アイウ'.ljust(10)}|" puts "|#{'アイウ'.ljust(10)}|" puts "|#{'abc'.ljust(10)}|" puts "|#{'abc'.ljust(2)}|" puts "|#{'abc'.rjust(10)}|" puts "|#{'abc'.center(10)}|" class String def ljust(width, padding = ' ') bytesize > width ? String.new(self) : self + (padding * ((width - bytesize) / padding.bytesize)) end def rjust(width, padding = ' ') bytesize > width ? String.new(self) : (padding * ((width - bytesize) / padding.bytesize)) + self end def center(width, padding = ' ') n = (width - bytesize) / padding.bytesize l, r = n / 2, n / 2 + n % 2 bytesize > width ? String.new(self) : padding * l + self + padding * r end end puts "1234567890"*2 puts "|#{'abc'.ljust(10)}|" puts "|#{'アイウ'.ljust(10)}|" puts "|#{'アイウ'.ljust(10)}|" puts "|#{'abc'.ljust(10)}|" puts "|#{'abc'.ljust(2)}|" puts "|#{'abc'.rjust(10)}|" puts "|#{'abc'.center(10)}|"
12345678901234567890 |abc | |アイウ | |アイウ | |abc | |abc| | abc| | abc | 12345678901234567890 |abc | |アイウ | |アイウ | |abc | |abc| | abc| | abc |