2014-02-21 4 views
1

= 12Splite 문자열과 정수

"ad15"=> 텍스트 = "광고", 값 = 15

"acbds1687"=> 텍스트 = "acbds", 값 = 1687

나는 정규 표현식이 문제를 해결할 수 있다고 생각하지만 확실하지 않다 정규 표현식에 대해.

+0

예제에서 문자열에는 공백이 없습니다. 독자는 이것이 요구 사항이라고 생각할 것이며 문제는 아닙니다. 그러나 좀 더 일반적인 해결책을 원한다면, 이제는 편집자가 제공 한 문자열의 예와 추출하려는 문자열의 예제를 추가하여 말할 수 있습니다. –

+0

문자와 정수가 결합 된 문자열이 있는데이를 분할하려고합니다. 문제는 그것이 서로 나누기가 어렵고 각 문자열 요소를 세지 않고 싶다는 것입니다. –

답변

2

아래처럼 :

irb(main):001:0> "t12".split(/(?<=[a-zA-Z])(?=\d)/) 
=> ["t", "12"] 
+0

굉장 :) 매력처럼 작동합니다. –

1

{ :text => "t", :value => 12 } 같은 해시로 문자열을 구문 분석하려면 :

def parse (string) 
    matchdata = string.match(/([a-zA-Z]+)([\d]+)/) 
    text = matchdata[1] 
    value = matchdata[2].to_i 

    return { text: text, value: value } 
end 

["t", 12] 같은 배열로 문자열을 구문 분석 :

def parse (string) 
    matchdata = string.match(/([a-zA-Z]+)([\d]+)/) 
    text = matchdata[1] 
    value = matchdata[2].to_i 

    return [text, value] 
end 
2

당신이 만약 분할에 머물러있는 캡처 그룹을 만드십시오. 따라서이 코드는 꽤 매끈합니다 :

text, value = string.split(/(\d+)/) 

또는 슬라이스! 메서드 :

text = 'sagasg125512' 
value = text.slice!(/\d+/) 
p text #=> "sagasg" 
p value #=> "125512" 
관련 문제