URL에 연결하기위한 초기 "The"및 공백을 제거합니다. 나는 이것을 가지고 있지만 추악하고 하나의 표현으로 통합하고 싶습니다.이 표현식을 어떻게 통합 할 수 있습니까?
@artist.sub!(/[Tt]he/, '')
@artist.gsub!(/\s+/, '')
URL에 연결하기위한 초기 "The"및 공백을 제거합니다. 나는 이것을 가지고 있지만 추악하고 하나의 표현으로 통합하고 싶습니다.이 표현식을 어떻게 통합 할 수 있습니까?
@artist.sub!(/[Tt]he/, '')
@artist.gsub!(/\s+/, '')
할 수 있습니다 물론 체인 #sub
및 #gsub
표현; 예를 들어,
@artist = @artist.sub(/^[Tt]he/, '').gsub(/\s+/, '')
더 이상의 컴팩트하고 내가 전화를 주저 것 우아한 — 단지 영리 (불분명).
#sub!
및 #gsub!
대신 #sub
및 #gsub
을 사용합니다. @ pguardiario의 설명에 따르면 두 번째 두 문은 일치가 없으면 nil을 반환하므로 NoMethodError
예외가 발생합니다. 또한 "The"가 문자열의 가운데에서 제거되는 것을 막기위한 앵커가 있습니다.
URL에 사용하기 위해 슬러그를 만들려는 경우 라이브러리에있는 메소드를 사용하는 것이 좋습니다.
+1. OP가 space-runs을 단일 공백으로 바꾸는 경우, 나는'\ s'을 사용하지 않고 대신'' ''을 사용하거나''squeeze ("')를 사용하여 전환합니다. –
조심성이 없으면'sub!'는 nil을 반환합니다. 또한 경계를 포함 시키면 문제가 생길 수 있습니다. – pguardiario
@pguardiario : 훌륭한 관찰. –
내가 함께 갈 것 :
@artist = @artist.sub(/\Athe\b/i, '').strip
공백을 없애기 위해 뭔가가 필요합니다 (OP 질문의 두 번째 줄). –
@Eric Walker -'strip'은 초기 공백을 제거합니다. – pguardiario
맞거나 틀리게, 그는 중간에도 공백을 넣을 것입니다. –
왜 하나의 정규식에 있어야합니까? 이는 유지하기가 더 복잡한 패턴 만 생성합니다. –