我只是想知道是否有任何方法从另一个字符串删除字符串? 就像这样:

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

当前回答

如果它是字符串的结尾,你也可以使用chomp:

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

其他回答

如果你只有一个目标字符串的出现,你可以使用:

str[target] = ''

or

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!和子!

如果它是字符串的结尾,你也可以使用chomp:

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

我会这么做

2.2.1 :015 > class String; def remove!(start_index, end_index) (end_index - start_index + 1).times{ self.slice! start_index }; self end; end;
2.2.1 :016 >   "idliketodeleteHEREallthewaytoHEREplease".remove! 14, 32
 => "idliketodeleteplease" 
2.2.1 :017 > ":)".remove! 1,1
 => ":" 
2.2.1 :018 > "ohnoe!".remove! 2,4
 => "oh!" 

格式化成多行:

class String
    def remove!(start_index, end_index)
        (end_index - start_index + 1).times{ self.slice! start_index }
        self
    end 
end

Ruby是2。5 +。

如果你的子字符串位于字符串的开头或结尾,那么Ruby 2.5引入了这样的方法:

Delete_prefix用于从字符串的开头删除子字符串 Delete_suffix用于从字符串末尾删除子字符串

如果你正在使用rails或较少的activesupport,你得到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