2009-10-27 3 views
22

4 자마다 큰 문자열을 분할하려고합니다. 이것이 내가하는 방법입니다 :Ruby 정규식이 4 자마다 작동하지 않습니다.

big_string.split(/..../) 

이것은 nil 배열입니다. 내가 볼 수있는 한, 이것이 효과가 있어야합니다. online ruby regex test에 플러그를 꽂을 때도 마찬가지입니다.

+0

정규식을 사용하여 정수를 분할하는 이유는 무엇입니까? 방법을 10000으로 연속적으로 나누고 결과를 배열에 저장하는 방법은 어떻습니까? – Kai

답변

78

시도 scan :

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

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

또는

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

문자의 수를 4로 나누어없는 경우

, 당신은 또한 나머지 문자를 잡을 수 있습니다

({1,4}은 1 ~ 4자를 탐욕스럽게 맞이합니다)

1

흠, 나는 Rubular 나이 일을하고 왜 모르겠어요 -하지만

이 매 4 문자 시퀀스

에서 문자열 을 분할로
big_string.split(/..../) 

번역 않습니다 제대로

같은 무언가로 결과를해야

대신

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

왜 첫 번째'.'와')'를 탈출하고 있습니까? 그건 유효한 루비가 아니야. – Volte

0

와우.

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

쾅 우는 소리? ++ 1 컴팩트하게 ... –

관련 문제