是否有ruby或rails函数可以删除任意数量的尾随.
(如果存在)?
例如,这些字符串:
sample string
sample string.
sample string..
sample string...
应该全部归还:
sample string
但sample... string...
应返回sample... string
答案 0 :(得分:2)
s = "string......."
s.chomp(s[/\.+$/])
#=> "string"
答案 1 :(得分:1)
>> str = "sample...string..."
>> str.gsub(/\.*$/, '')
=> "sample...string"
您也可以使用gsub!
进行原地替换
答案 2 :(得分:0)
s = "string......."
s.slice!(/\.+$/);s
#=> "string"
答案 3 :(得分:0)
Ruby String#[]
可以创造奇迹。例如:
foo = 'sample string...'
foo[/\.+$/] = ''
foo # => "sample string"
和
foo = 'sample... string...'
foo[/\.+$/] = ''
foo # => "sample... string"
对于单个字符串来说这很好。如果您有多行文字并希望一次更改所有文字:
foo = "sample string
sample string.
sample string..
sample string...
sample... string..."
foo.gsub!(/\.+$/, '')
puts foo
# >> sample string
# >> sample string
# >> sample string
# >> sample string
# >> sample... string
重要的是,您尝试删除字符串中的 last .
,因此您需要an anchor来告诉正则表达式引擎你在寻找什么。查看文档以查看可用的内容以及它们如何影响您的搜索/替换尝试。
答案 4 :(得分:0)
s = "string......."
s.split(/\.+$/, 0).first
#=> "string"