删除x个尾随字符(如果存在)?

时间:2014-04-07 17:44:52

标签: ruby-on-rails ruby ruby-on-rails-4

是否有ruby或rails函数可以删除任意数量的尾随.(如果存在)?

例如,这些字符串:

sample string
sample string.
sample string..
sample string...

应该全部归还:

sample string

sample... string...应返回sample... string

5 个答案:

答案 0 :(得分:2)

s = "string......."
s.chomp(s[/\.+$/])
#=> "string"

http://ruby-doc.org/core-2.0/String.html#method-i-chomp

答案 1 :(得分:1)

>> str = "sample...string..."
>> str.gsub(/\.*$/, '')
=> "sample...string"

您也可以使用gsub!进行原地替换

答案 2 :(得分:0)

s = "string......."
s.slice!(/\.+$/);s
#=> "string"

http://ruby-doc.org/core-2.0/String.html#method-i-slice

答案 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"

http://ruby-doc.org/core-2.0/String.html#method-i-split