ruby-如何填充“;由5个字符组成的组“;最后一组是海底?

ruby-如何填充“;由5个字符组成的组“;最后一组是海底?,ruby,regex,string,string-substitution,Ruby,Regex,String,String Substitution,我希望我的字符串以5个字符为一组 thisisastring => ["thisi", "satri", "ng"] 但我也希望最后一组中加入__u's,例如 thisisastring => ["thisi", "satri", "ng___"] 我已经得到了关于字符串拆分的信息: "thisisastring".scan /.{5}/) ["thisi", "satri", "ng"] 但不太确定如何为最后一组填充,使其成为“ng_uuuuuuuu” 尽管开始认为

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

thisisastring => ["thisi", "satri", "ng"]  
但我也希望最后一组中加入__u's,例如

thisisastring => ["thisi", "satri", "ng___"]  
我已经得到了关于字符串拆分的信息:

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

["thisi", "satri", "ng"]
但不太确定如何为最后一组填充,使其成为“ng_uuuuuuuu”

尽管开始认为股息(
div()
)、模数(
%
)和
.ljust
的组合可能会起作用

填充字符的数量可能是:
(长度%5)*“quot
(如果可以将其相乘的话)

也许是使用了:

ruby-1.9.2-p290 :023 > (len % 5).to_i.times { print '_' }
___ => 3
甚至不接近效率,但如果你不想让它成为一条线,像这样的东西应该可以工作:

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

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

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

不是Ruby专家,但为什么不检查数组中最后一个元素的长度呢。在上面加上5个长度的“u”?我喜欢。当你说“不接近效率”时,它可能比使用activesupport要好,不是吗?我可以进行计时运行,但我希望它在枚举中的每个项目上运行
ljust
,而实际上最后一个项目是唯一长度小于5个字符的项目。