ruby - как дополнить «группы из 5 символов» нижними чертами в последней группе? - PullRequest
2 голосов
/ 03 февраля 2012

Я хочу, чтобы моя строка состояла из 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 ]

6 голосов
/ 03 февраля 2012

Даже не близко к эффективному, но если вы хотите, чтобы он был в одной строке, то что-то вроде этого должно работать:

"thisisastring".scan(/.{1,5}/).collect {|x| x.ljust(5,"_")}
4 голосов
/ 03 февраля 2012

Поскольку корректировка требуется только для последнего элемента, более эффективно выполнять корректировку перед разделением, а не повторять элементы для выполнения корректировки.

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