Руби регулярное выражение для разделения на каждые четыре символа не работает - PullRequest
23 голосов
/ 27 октября 2009

Я пытаюсь разбить значительную строку каждые четыре символа. Вот как я пытаюсь это сделать:

big_string.split(/..../)

Это дает нулевой массив. Насколько я вижу, это должно работать. Это происходит даже тогда, когда я подключаю его к онлайн-тесту ruby ​​regex .

Ответы [ 3 ]

81 голосов
/ 27 октября 2009

Попробуйте scan вместо:

$ irb
>> "abcd1234beefcake".scan(/..../)
=> ["abcd", "1234", "beef", "cake"]

или

>> "abcd1234beefcake".scan(/.{4}/)
=> ["abcd", "1234", "beef", "cake"]

Если количество символов не делится на 4, вы также можете получить оставшиеся символы:

>> "abcd1234beefcakexyz".scan(/.{1,4}/)
=> ["abcd", "1234", "beef", "cake", "xyz"]

({1,4} будет жадно захватывать от 1 до 4 символов)

1 голос
/ 27 октября 2009

Хм, я не знаю, что там делает Рубул и почему - но

big_string.split(/..../)

переводится как

разбить строку на каждую 4-символьную последовательность

, который должен правильно привести к чему-то вроде

["", "", "", "abc"]
0 голосов
/ 27 октября 2009

Упс.

str = 'asdfasdfasdf'
c = 0
out = []
inum = 4
(str.length / inum).round.times do |s|
    out.push(str[c, round(s * inum)])
    c += inum
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...