2014-11-06 4 views
0

레일을 사용하여 이전 스프레드 시트의 데이터를 데이터베이스로 가져옵니다.Ruby의 문자열 # split에서 구분 기호를 표시하지 않습니다.

나는 그래서 내가에이 문자열을 분할 싶어 때로는이

third and fourth 

같은

first, second 

과 다른 시간으로 포맷 된 각 행에 대한 목록을 포함하는 하나의 열이 배열은 쉼표 또는 "and"단어로 구분됩니다.

패턴 그룹을 포함하는 경우는, 각각의 일치뿐만 아니라 배열에 반환됩니다 : 나는 문서가 말한대로, 불행하게도

my_string.split /\s?(\,|and)\s?/ 

을 시도했다. 나는 제로 번째와 두 번째 요소 분명히에만 나에게 유용
[ 
[0] "first" 
[1] ", " 
[2] "second" 
] 

과 같은 배열을 다시 얻을 수 있다는 것을 의미

. 내가하려는 일을 달성하기위한 가장 깔끔한 방법으로 무엇을 권하고 싶습니까?

+3

'(? : ...)'를 사용하여 캡처하지 않고 그룹화하십시오. – Stefan

+0

잘못된 구분 기호'mystring.gsub (/ (, | and) /, '') .split'도 제거 할 수 있습니다. – ptd

+0

@ptd 그런 다음 구분 된 항목의 차이점을 알 수있는 방법이 없습니다. 쉼표 분리 문자로 바꾸고 분리를 실행하는 것이 좋습니다. – nikkon226

답변

3

?:을 사용하여 정규 표현식에서 그룹을 캡처하지 않도록 지시 할 수 있습니다. 이 AS

my_string.split(/\s?(?:\,|and)\s?/) 
# => ["first", "second"] 

따로 레일을 사용하여 데이터베이스에

참고.

Ruby와는 관계가 없습니다.

+0

Ruby 전용 솔루션을 제공했기 때문에 기쁩니다. 그러나 Rails 만 사용할 수 있었기 때문에 Rails에 대해 언급했습니다. – Dan

+0

''first, second'.scan (/^[^, \ s] + | \ S + $ /)'과 (과) 일치하는 것은 무엇입니까? –

+0

@AvinashRaj 사용자는 문자열에 쉼표가 포함되어 있으며 다른 경우에는 AND가 포함되어 있다고 언급했습니다. –

관련 문제