2013-03-07 4 views
1

각 문자열에 적어도 하나의 구분 기호가 포함되므로 문자열을 2 개의 요소로 분할 할 수 있기를 원합니다. 예 : "hello_world". 을 적용하면 ["hello", "world"]이 표시됩니다.마지막 줄 바꿈 문자로 나누는 레일

두 개 이상의 구분 기호가있는 문자열이있는 경우 문제가 발생합니다. 예 "hello_to_you". 수신하고 싶습니다 : ["hello_to", "you"].

분할 기능에 대한 제한 옵션은 .split("_", 2)입니다. 단, ["hello", "to_you"]이 생성됩니다.

기본적으로 전체 문자열을 마지막 구분 기호 ("_")로 분할해야합니다.

+0

같은 질문을 다르게 표시 : [루비 : 오른쪽부터 계산 문자에서 분할 문자열 (HTTP : //stackoverflow.com/questions/1844118/ruby-split-string-at-character-counting-from-the-right-side) –

답변

2

이것은 String#rpartition이 바로 이러한 작업을 수행하는 것입니다

'hello_to_you'.split /\_(?=[^_]*$)/ 
+0

감사합니다. 깨끗하고 단순하며 잘 작동합니다! 내가 필요한 것! – Dmitri

+1

'_'을 벗어나지 마십시오. 또한'/_(?!.*_)/'이 더 쉽지 않은가? – pguardiario

2
class String 
    def split_by_last_occurrance(char=" ") 
    loc = self.rindex(char) 
    loc != nil ? [self[0...loc], self[loc+1..-1]] : [self] 
    end 
end 

"test by last_occurrance".split_by_last #=> ["test by", "last"] 
"test".split_by_last_occurrance    #=> ["test"] 
+0

감사합니다 :) 잘 작동해야합니다. – Dmitri

+0

'재발견하지 말고 대신 내 대답을 참조하십시오. –

5

시도 :

first_part, _, last_part = 'hello_to_you'.rpartition('_') 
first_part # => 'hello_to' 
last_part # => 'you'