How to strip leading and trailing quote from string, in Ruby

后端 未结 9 1478
栀梦
栀梦 2020-12-17 07:59

I want to strip leading and trailing quotes, in Ruby, from a string. The quote character will occur 0 or 1 time. For example, all of the following should be converted to f

相关标签:
9条回答
  • 2020-12-17 08:32

    As usual everyone grabs regex from the toolbox first. :-)

    As an alternate I'll recommend looking into .tr('"', '') (AKA "translate") which, in this use, is really stripping the quotes.

    0 讨论(0)
  • 2020-12-17 08:36

    You could also use the chomp function, but it unfortunately only works in the end of the string, assuming there was a reverse chomp, you could:

    '"foo,bar"'.rchomp('"').chomp('"')
    

    Implementing rchomp is straightforward:

    class String
      def rchomp(sep = $/)
        self.start_with?(sep) ? self[sep.size..-1] : self
      end
    end
    

    Note that you could also do it inline, with the slightly less efficient version:

    '"foo,bar"'.chomp('"').reverse.chomp('"').reverse
    

    EDIT: Since Ruby 2.5, rchomp(x) is available under the name delete_prefix, and chomp(x) is available as delete_suffix, meaning that you can use

    '"foo,bar"'.delete_prefix('"').delete_suffix('"')
    
    0 讨论(0)
  • 2020-12-17 08:36

    Assuming that quotes can only appear at the beginning or end, you could just remove all quotes, without any custom method:

    '"foo,bar"'.delete('"')
    
    0 讨论(0)
提交回复
热议问题