Ruby支持使用格式字符串,就像许多其他语言一样:
[11] (pry) main: 0> '%3.3s' % 'f' => " f" [12] (pry) main: 0> '%3.3s' % 'foo' => "foo" [13] (pry) main: 0> '%3.3s' % 'foobar' => "foo"
如果要在右侧填充,请在格式字符串中使用-
:
[14] (pry) main: 0> '%-3.3s' % 'f' => "f " [15] (pry) main: 0> '%-3.3s' % 'foo' => "foo" [16] (pry) main: 0> '%-3.3s' % 'foobar' => "foo"
你也可以用printf
或sprintf
,但我更喜欢更通用的%
,也就是sprintf
.
从sprintf
份文件中:
s | Argument is a string to be substituted. If the format | sequence contains a precision, at most that many characters | will be copied.
以及:
- | all | Left-justify the result of this conversion.
如果我不想用空格而是其他字符填充呢?
底层的Ruby代码是用C编写的,而且它的硬编码是使用' '
作为pad字符,所以这不可能直接实现,除非您想修改源代码,重新编译Ruby,并使用一次性版本的语言.相反,你可以这样做:
[17] (pry) main: 0> ('%-3.3s' % 'f').gsub(' ', '.') => "f.."
但这比简单的gsub
要复杂得多.如果需要提供特殊字符,通常最好在不使用格式字符串的情况下调整字符串.格式字符串非常强大,但并不完全灵活.
否则,我会 Select @steenslag的解决方案,这是你自己滚动的基础.你失go 了使用格式字符串的能力,不得不依靠连接字符串或类似的东西来获得列输出,但它也可以工作.