2016-07-01 12 views
0

Я хочу найти метод для итерации по строке и получения каждого n символов. Результат должен быть похож на метод each_cons для массива.Получение n символов из строки

Теперь вы о каком-либо существующем методе или о том, как реализовать собственный метод?

ответ

2

Использование String#each_char:

"abcdef".each_char.each_cons(3) { |a| p a } 
["a", "b", "c"] 
["b", "c", "d"] 
["c", "d", "e"] 
["d", "e", "f"] 
=> nil 
0

Дополняя другой ответ.

"abcdef".each_char.to_a.in_groups_of(3) 
+0

1. 'in_groups_of' является метод Rails. 2. Результат другой. – Ilya

+0

Спасибо, я не думал об этом. – fabriciofreitag

1

Если вы хотите "последовательных строк" длины 3:

r =/
    (?=  # begin a positive lookahead 
     ((.{3}) # match any three characters in capture group 1 
    )   # close the positive lookahead 
    /x  # free-spacing regex definition mode 

"abcdef".scan(r).flatten 
    #=> ["abc", "bcd", "cde", "def"] 

Письменное обычным способом, это регулярное выражение:

r = /(?=(.{3}))/ 

Если вы хотите массив массивов три письма, сделайте это:

"abcdef".scan(/(?=(.{3}))/).flatten.map { |s| s.split('') } 
    #=> [["a", "b", "c"], ["b", "c", "d"], ["c", "d", "e"], ["d", "e", "f"]] 
Смежные вопросы