Ruby 2.3.4——如何删除字符串的子字符串?
例如:有一个字符串:Ruby 2.3.4——如何删除字符串的子字符串?,ruby,range,substring,Ruby,Range,Substring,例如:有一个字符串: 'Trump is great#Trump is great#' 如果我这样做: 'Trump is great#Trump is great#'.delete! 'Trump is great#' 我会得到: '' 但我想得到: 'Trump is great#' 所以我想要一个“特朗普很棒”的范围,并按这个范围删除这个子串 怎么做 或者用其他方法删除子字符串?我想你要找的是sub!。 不像gsub!或删除!,它只替换第一个匹配项 'Trump is great#
'Trump is great#Trump is great#'
如果我这样做:
'Trump is great#Trump is great#'.delete! 'Trump is great#'
我会得到:
''
但我想得到:
'Trump is great#'
所以我想要一个“特朗普很棒”的范围,并按这个范围删除这个子串
怎么做
或者用其他方法删除子字符串?我想你要找的是sub!。 不像gsub!或删除!,它只替换第一个匹配项
'Trump is great#Trump is great#'.sub!('Trump is great#', '')
=> 'Trump is great#'
由于它接受正则表达式,您可以使用gsub定义您希望它匹配多少次。我发现我可以做到这一点!:
'Trump is great#Trump is great#'.slice! 'Trump is great#'
如果字符串的模式相似,可以执行以下操作:
string.split('#').first + '#'
还可以将自定义方法添加到字符串类:
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#"
如果您的字符串总是加倍的话,您可以删除英镑以摆脱+
str.gsub!(/^(.*)(?=\1$)/, '')
特朗普伟大只是一个例子吗?您要清理的模式是否总是相同的-带有a的sting,前缀和后缀是相同的字符串texttext?