2016-07-01 13 views
0

Ich möchte Methode zum Iterieren durch Zeichenfolge und zum Abrufen jeder n Zeichen aus finden. Das Ergebnis sollte ähnlich wie in each_cons Methode für Array sein.N Zeichen aus Zeichenfolge erhalten

Möchten Sie jetzt über eine bestehende Methode oder eine eigene Methode implementieren?

Antwort

2

Verwendung 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

die andere Antwort Ergänzung.

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

1. 'in_groups_of' ist eine Rails-Methode. 2. Ergebnis ist anders. – Ilya

+0

Danke Ich habe nicht daran gedacht. – fabriciofreitag

1

Wenn Sie "aufeinanderfolgende Strings" mit einer Länge von 3 wollen:

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"] 

in der herkömmlichen Art und Weise geschrieben, diese Regex ist:

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

Wenn Sie ein Array von Arrays von möchten drei Buchstaben, tun dies:

"abcdef".scan(/(?=(.{3}))/).flatten.map { |s| s.split('') } 
    #=> [["a", "b", "c"], ["b", "c", "d"], ["c", "d", "e"], ["d", "e", "f"]] 
Verwandte Themen