2010-07-09 6 views
1

분할하려는 문자열이 있습니다. D017209D019169D019014를 D017209, D019169 및 D019014에 쉼표로 묶습니다.쉬운 문자열 분할?

017209 
019169 
019014 

내가 무엇을 놓치고 :처럼 나는

a = D017209D019169D019014 
b = a.slice("D") 
puts b 

내 결과가있는 경우

보인다?

+0

문자열 분할 기능은 항상 종결자를 제거합니다. 'D'로 시작하는 하위 문자열을 원합니다. 정규식은 여기에서 가장 좋겠지 만 정직하게는 내가 너무 자주 사용하여 내가 실수를 할 경우 (테스트 할 시간이 없을 때) 다른 사람이 대답을하도록 허용합니다 –

+0

일반적인 경험 법칙 : 당신이 무엇을 알고있을 때'split'을 사용하십시오 당신이 무엇을 지키고 싶은지 안다면 정규식을 사용하십시오. –

답변

5
"D017209D019169D019014".scan(/D[^D]*/) 

Scan은 모든 일치 항목의 배열을 반환합니다. 여기서는 정확히 일치하는 항목을 반환합니다. 정규 표현식은 단순히 D를 의미하며 그 뒤에 0이 아닌 D가옵니다.

+1

조인 추가 쉼표로 추가합니다. "D017209D019169D019014".scan (/ D [^ D] * /). 조인 (",")은 "D017209, DD019169, DD019014" –

0

문자열 분할 기능은 항상 종결자를 제거합니다. 'D'로 시작하는 하위 문자열을 원합니다. 나는 내 댓글 말했다 같이 정규식, BTW 여기

a.scan(/D[0-9]*/).each do |line| 
    #do stuff with each piece of data 
end 

가장 좋은 것입니다 나는 절대적으로하지 정규식 전문가도 좋은 정말입니다. 그래서, 누군가가 이걸 알게되면 내가 알기는하지만 입력 내용과 함께 작동해야합니다.