2014-04-15 4 views
1

단어를 '#'으로 나눈 단어로 구성된 문자열이 있습니다. 예를 들어 'This is # an example #'이고 두 번째 단어부터 마지막 ​​단어까지 마지막 단어 나 마지막 두 단어를 추출해야합니다.단어를 기준으로 문자열 분할

두 번째 단어가 'myword'인 경우 마지막 두 단어가 필요합니다. 그렇지 않으면 마지막 단어가 필요합니다.

마지막으로 두 번째 분할 및 확인보다 나은 방법이 있습니까? 아마도 정규식을 사용하고 있을까요?

감사합니다.

답변

1
당신은 줄 끝 앵커 $을 사용하고 옵션의 부 myword# 접두사 할 수
+0

답장을 보내 주셔서 감사합니다. 불행히도 귀하의 발췌 문장은 "두 번째로 분할하고 확인하는 것보다 더 좋은 방법이 있습니까?"라는 질문에 대한 대답이 아닙니다. – macsig

3

str = 'this#is#an#example#using#myword#also' 
array = str.split('#') 
array[-2] == 'myword' ? array[-2..-1].join('#') : array[-1] 

With regex: 

'this#is#an#example'[/(myword\#)*\w+$/] 
# => "example" 

'this#is#an#example#using#myword#also'[/(myword\#)*\w+$/] 
# => "myword#also" 
그러나

str = 'this#is#an#example' 
str[/(?:#)((myword#)?[^#]+)$/, 1] 
#=> "example" 

str = 'this#is#an#example#using#myword#also' 
str[/(?:#)((myword#)?[^#]+)$/, 1] 
#=> "myword#also" 

, 나는 정규 표현식을 사용하여 생각하지 않습니다이 경우 "더 나은"입니다 . 나는 Santosh (삭제 된) 답변과 같은 것을 사용할 것이다 : 라인을 #으로 나눠서 if 절을 사용하자.

def foo(str) 
    *, a, b = str.split('#') 
    if a == 'myword' 
    "#{a}##{b}" 
    else 
    b 
    end 
end