例如:有一个字符串:
'Trump is great#Trump is great#'
如果我这样做:
'Trump is great#Trump is great#'.delete! 'Trump is great#'
我会得到:
''
但是我想得到:
'Trump is great#'
因此,我想要一个'Trump is great#'
的范围,并以此范围删除此子字符串。
该怎么做?
还是其他删除子字符串的方法?
答案 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#"
您可以删除摆脱+ '#'
的英镑