2012-02-02 33 views
2

我希望我的字符串包含5个字符,例如.e.g。ruby​​ - 如何在最后一组中填充“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 
+2

不是Ruby专家,但为什么不只是检查数组中的最后一个元素的长度。追加5长度'_到它? – sln 2012-02-02 21:37:41

回答

4

由于仅在最后一个元素上需要调整,在分割之前进行调整而不是在元素上进行调整以进行调整会更有效。

("thisisastring"+"_"*("thisisastring".length % 5)).scan(/.{5}/) 
+0

是的,那是我认为的东西,多亏了“_” – 2012-02-02 22:32:49

6

甚至没有接近高效,但如果你想吨至一个行了,这样的事情应该工作:

"thisisastring".scan(/.{1,5}/).collect {|x| x.ljust(5,"_")} 
+0

是的,“正确”。 – steenslag 2012-02-02 21:40:59

+0

我喜欢它。当你说不够高效时,它可能会比使用主动支持更好,不是吗? – 2012-02-02 22:02:10

+0

我可以做定时运行,但也想要意见 – 2012-02-02 22:02:27