2

我希望我的字符串以 5 个字符为一组,例如

thisisastring => ["thisi", "satri", "ng"]  

但我也希望最后一组用__填充,例如

thisisastring => ["thisi", "satri", "ng___"]  

我已经达到了字符串拆分:

"thisisastring".scan /.{5}/)

["thisi", "satri", "ng"]

但不太确定如何为最后一组进行填充以使其“ng___”

尽管开始认为除数 ( div())、模数 ( %)的组合.ljust可能会这样做。

也许填充字符的数量是:((length % 5) * "_"如果你可以乘以它)?

也许使用的东西:

ruby-1.9.2-p290 :023 > (len % 5).to_i.times { print '_' }
___ => 3
4

2 回答 2

6

甚至没有接近高效,但如果你想把它排成一行,这样的事情应该可以工作:

"thisisastring".scan(/.{1,5}/).collect {|x| x.ljust(5,"_")}
于 2012-02-02T21:35:46.293 回答
4

由于只需要对最后一个元素进行调整,因此在拆分之前进行调整比迭代元素进行调整更有效。

("thisisastring"+"_"*("thisisastring".length % 5)).scan(/.{5}/)
于 2012-02-02T22:14:01.313 回答