From: Kazuhiro NISHIYAMA Date: 2006-06-12T17:53:21+09:00 Subject: [ruby-list:42391] Re: ruby -Ks -rjcode -e"p('|%5.5s|'%'泣き別れ')" #=> "|泣き怖" 西山和広です。 >>>>> On Mon, 12 Jun 2006 17:05:50 +0900 >>>>> ggb03124@nifty.com(take_tk) said: > > 「仕様じゃ」と怒られそうな気もするけど、 > できれば、"|泣き |" が返ってほしいです。 > > (そうでないとフォーマットをあらかじめ設定しておく方法が、フォーマットを > 作成するもととなったサイズを調べないとならなくなるので、使えないです)。 > > ---- > G:\apollo>ruby -v -Ks -rjcode -e"p('|%5.5s|'%'泣き別れ')" > ruby 1.8.4 (2005-12-24) [i386-mswin32] > "|泣き怖" > > G:\apollo> > ---- '%5.5s'の仕様を考えると"| 泣き|"になることはあっても"|泣き |"には ならないような気がしますが、'%-5.5s'にすれば良さそうです。 泣き別れを防ぐには、現在の正規表現の実装に依存してしまいますが、 正規表現ですべての文字にマッチさせると、泣き別れの1バイト目が 消えることを利用して以下のようにするというのはどうでしょうか? C:\ruby\bin>ruby -v -Ks -e"fmt='%5.5s';p(('|'+fmt+'|')%(fmt%'泣き別れ')[/.*/])" ruby 1.8.4 (2006-04-14) [i386-mswin32] "| 泣き|" C:\ruby\bin>ruby -v -Ks -e"fmt='%-5.5s';p(('|'+fmt+'|')%(fmt%'泣き別れ')[/.*/])" ruby 1.8.4 (2006-04-14) [i386-mswin32] "|泣き |" C:\ruby\bin> -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA)