2011-01-22 1 views

답변

18

String#splitkeep any groups 결과 배열의 구분 기호 정규 표현식입니다.

parts = whole.split(/(\d+)/) 
2

이 경우 당신이 정말로 분리기의 공백을 원하지 않았다, 당신은 이전/이후에 일관성 핸들을 갖고 싶어 않았다, 이것을 사용 :

test = [ 
    "4", 
    "Section 2", 
    "4 Section", 
    "Section 5 Aisle", 
] 

require 'pp' 
pp test.map{ |str| str.split(/\s*(\d+)\s*/,-1) } 
#=> [["", "4", ""], 
#=> ["Section", "2", ""], 
#=> ["", "4", "Section"], 
#=> ["Section", "5", "Aisle"]] 

을 따라서 당신은 항상 수 do :

prefix, digits, suffix = str.split(/\s*(\d+)\s*/,-1) 
if prefix.empty? 
    ... 
end 

... 일치하는 항목의 길이 또는 일부를 테스트하는 대신 ....