2009-10-27 12 views
22

Sto provando a dividere una stringa considerevole ogni quattro caratteri. Questo è il modo che sto cercando di farlo:Ruby regex per una divisione ogni quattro caratteri non funziona

big_string.split(/..../) 

Questo sta dando una matrice zero. Per quanto posso vedere, dovrebbe funzionare. Lo fa anche quando lo inserisco in un online ruby regex test.

+0

Perché dovresti dividere un intero usando regex? Che ne dici di dividersi solo per 10000 e memorizzare i risultati in un array. – Kai

risposta

78

Prova scan invece:

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

o

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

Se il numero di caratteri non è divisibile per 4, è anche possibile afferrare i caratteri rimanenti:

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

(Lo {1,4} prenderà avidamente da 1 a 4 caratteri)

1

Hmm, non so che cosa Rubular sta facendo lì e perché - ma

big_string.split(/..../) 

non si traduce in

dividere la stringa ad ogni 4 caratteri sequenza

che dovrebbe risultare correttamente in qualcosa come

["", "", "", "abc"] 
+0

Perché stai sfuggendo al tuo primo '.' e') '? Questo non è valido Ruby. – Volte

0

Whoops.

str = 'asdfasdfasdf' 
c = 0 
out = [] 
inum = 4 
(str.length/inum).round.times do |s| 
    out.push(str[c, round(s * inum)]) 
    c += inum 
end 
+0

whoops? ++ 1 per compattezza ... –

Problemi correlati