2012-02-02 32 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