[ruby] 문자열에서 부분 문자열 제거

다른 문자열에서 문자열을 제거하는 방법이 있는지 궁금합니다. 이 같은:

class String
  def remove(s)
    self[s.length, self.length - s.length]
  end
end



답변

슬라이스 방법을 사용할 수 있습니다.

a = "foobar"
a.slice! "foo"
=> "foo"
a
=> "bar"

‘!’가 아닌 버전도. 더 많은 정보는 다른 버전에 대한 문서에서도 볼 수 있습니다 :
http://www.ruby-doc.org/core/classes/String.html#method-i-slice-21


답변

에 대해 어떻게 str.gsub("subString", "")
밖으로 확인 루비 문서를


답변

문자열의 끝인 경우 다음을 사용할 수도 있습니다 chomp.

"hello".chomp("llo")     #=> "he"


답변

대상 문자열이 한 번만 나타나는 경우 다음을 사용할 수 있습니다.

str[target] = ''

또는

str.sub(target, '')

여러 번의 대상 사용이있는 경우 :

str.gsub(target, '')

예를 들어 :

asdf = 'foo bar'
asdf['bar'] = ''
asdf #=> "foo "

asdf = 'foo bar'
asdf.sub('bar', '') #=> "foo "
asdf = asdf + asdf #=> "foo barfoo bar"
asdf.gsub('bar', '') #=> "foo foo "

전체 대체를 수행해야하는 경우 및 의 "!"버전을 사용하십시오 .gsub!sub!


답변

Rails를 사용하는 경우도 있습니다 remove.

예를 들어 "Testmessage".remove("message")수율 "Test".

경고 :이 방법은 모든 발생을 제거 합니다


답변

루비 2.5 이상

만약 당신의 하위 문자열이 문자열의 시작 부분에 있다면, Ruby 2.5는이를위한 방법을 도입했습니다 :

  • delete_prefix문자열의 시작 부분에서 부분 문자열을 제거하기위한
  • 문자열 끝에서 부분 문자열을 제거하기위한 delete_suffix

답변

레일을 사용하거나 덜 활동적인 지원을 받으면 String # remove 및 String # remove! 방법

def remove!(*patterns)
  patterns.each do |pattern|
    gsub! pattern, ""
  end

  self
end

출처 : http://api.rubyonrails.org/classes/String.html#method-i-remove