2009-10-27 9 views
22

Próbuję podzielić znaczący ciąg co cztery znaki. Tak właśnie próbuję to zrobić:Wyrażenie ruby ​​dla podziału co cztery znaki nie działa

big_string.split(/..../) 

To daje tablicę zero. O ile widzę, to powinno działać. Ma to miejsce nawet po podłączeniu go do online ruby regex test.

+0

Dlaczego chcesz podzielić liczbę całkowitą za pomocą wyrażeń regularnych? Co powiesz na sukcesywne dzielenie przez 10000 i przechowywanie wyników w tablicy. – Kai

Odpowiedz

78

Spróbuj scan zamiast:

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

lub

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

Jeśli liczba znaków nie jest podzielna przez 4, można również złapać pozostałe znaki:

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

(The {1,4} będzie łapczywie chwycić od 1 do 4 znaków)

1

Hmm, nie wiem, co robi Rubular tam i dlaczego - ale

big_string.split(/..../) 

nie przekładają się

podzielić ciąg na każdy 4-znakowym sekwencja

które powinno poprawnie doprowadzić do czegoś w rodzaju

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

Dlaczego unikasz swojego pierwszego '.' i') '? To nie jest poprawne 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 dla zwartości ... –

Powiązane problemy