Ruby 2.3.4-如何删除字符串的子字符串?

时间:2018-07-05 03:18:27

标签: ruby range substring

例如:有一个字符串:

'Trump is great#Trump is great#'

如果我这样做:

'Trump is great#Trump is great#'.delete! 'Trump is great#'

我会得到:

''

但是我想得到:

'Trump is great#'

因此,我想要一个'Trump is great#'的范围,并以此范围删除此子字符串。

该怎么做?

还是其他删除子字符串的方法?

4 个答案:

答案 0 :(得分:4)

我认为您正在寻找的是sub!。 与gsub!delete!不同,它仅替换第一个匹配项。

'Trump is great#Trump is great#'.sub!('Trump is great#', '')
=> 'Trump is great#'

由于它接受正则表达式,因此您可以使用gsub来定义要匹配的次数。

答案 1 :(得分:2)

如果您的字符串总是加倍...

str.gsub!(/^(.*)(?=\1$)/, '')

答案 2 :(得分:1)

我发现我可以做到! :

'Trump is great#Trump is great#'.slice! 'Trump is great#'

答案 3 :(得分:0)

如果字符串的模式相似,则可以执行以下操作:

string.split('#').first + '#'

您还可以将自定义方法添加到字符串Class:

class String
  def cut_pound
    split('#').first + '#'
  end
end

因此,如果您使用的字符串具有相同的模式:

string1 = 'Wimbledon Open#Wimbledon Open#'
string2 = 'FIFA world cup#FIFA world cup#'

可以打电话给

string1.cut_pound # => "Wimbledon Open#"
string2.cut_pound # => "FIFA world cup#"

您可以删除摆脱+ '#'的英镑