如何删除尾随逗号?

AnA*_*ice 21 ruby regex

给出如下字符串:

Bob
Bob,
Bob
Bob Burns,
Run Code Online (Sandbox Code Playgroud)

你怎么能用逗号回复那个?

Bob
Bob
Bob
Bob Burns
Run Code Online (Sandbox Code Playgroud)

另外,我希望这个方法不会破坏,如果传递一个零,只是为了返回一个零?

def remove_trailing_comma(str)
  !str.nil? ? str.replace(",") :nil
end
Run Code Online (Sandbox Code Playgroud)

RHS*_*ger 43

我的想法是使用string.chomp:

返回一个新的String,其中给定的记录分隔符从str的末尾(如果存在)中删除.

这样做你想要的吗?

def remove_trailing_comma(str)
    str.nil? ? nil : str.chomp(",")
end
Run Code Online (Sandbox Code Playgroud)

  • 将它写成`str.chomp(',')if(str)`更为优雅. (5认同)
  • 或者 `str&.chomp(',')` 如果你使用的是 Ruby 2.3+。 (2认同)

Vas*_*ich 5

使用字符串#chomp

irb(main):005:0> "Bob".chomp(",")
=> "Bob"
irb(main):006:0> "Bob,".chomp(",")
=> "Bob"
irb(main):007:0> "Bob Burns,".chomp(",")
=> "Bob Burns"
Run Code Online (Sandbox Code Playgroud)

更新:

def awesome_chomp(str)
    str.is_a?(String) ? str.chomp(",") : nil
end
p awesome_chomp "asd," #=> "asd"
p awesome_chomp nil #=> nil
p awesome_chomp Object.new #=> nil
Run Code Online (Sandbox Code Playgroud)