2014-09-29 4 views
0

String#split에 의해 제거 된 문자열을 별도의 배열로 추출하는 방법이 있습니까?Ruby에서 두 개의 배열로 문자열을 나누는 방법

s = "This is a simple, uncomplicated sentence." 
a = s.split(/,|\./) #=> [ "This is a simple", "uncomplicated sentence" ] 
x = ... => should contain [ ",", "." ] 

실제로 사용해야하는 실제 정규식은이 예제보다 훨씬 복잡합니다.

+1

귀하의 정규 표현식은 그런 식으로 (이스케이프 점) 작동하지 않습니다. – Stefan

+0

코드 주석에서 x를 언급합니다. 여기서 X는 무엇입니까? – tomsoft

+0

x는 내가 계산하고 싶은 것입니다. - 나는 a와 x를 둘 다 얻는 방법이 필요합니다. – kfmfe04

답변

2

이와 비슷한?

a = s.scan(/,|\./) 
0

이 시도 :

a = s.split(/,/)[1..-1] 
1

당신이 원하는 때 일치하는 구분 기호와 스테판의 의견처럼, 당신은 캡처와 split를 사용해야 사이에있는 문자열 모두.

"This is a simple, uncomplicated sentence." 
.split(/([,.])/) 
# => ["This is a simple", ",", " uncomplicated sentence", "."] 

서로 다른 배열로 구분하려면

는, 다음을 수행하십시오

a, x = 
"This is a simple, uncomplicated sentence." 
.split(/([,.])/).each_slice(2).to_a.transpose 
a # => ["This is a simple", " uncomplicated sentence"] 
x # => [",", "."] 

또는

a = 
"This is a simple, uncomplicated sentence." 
.split(/([,.])/) 
a.select.with_index{|_, i| i.even?} 
# => ["This is a simple", " uncomplicated sentence"] 
a.select.with_index{|_, i| i.odd?} 
# => [",", "."] 
관련 문제