Ruby: Split string at character, counting from the right side

后端 未结 6 1434
小蘑菇
小蘑菇 2020-12-10 00:59

Short version -- How do I do Python rsplit() in ruby?

Longer version -- If I want to split a string into two parts (name, suffix) at the first \'.\' character, this

6条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-10 01:22

    You can also add rsplit to the String class by adding this at the top of your file.

    class String
      def rsplit(pattern=nil, limit=nil)
        array = self.split(pattern)
        left = array[0...-limit].join(pattern)
        right_spits = array[-limit..]
        return [left] + right_spits
      end
    end
    

    It doesn't quite work like split. e.g.

    $ pry
    [1] pry(main)> s = "test.test.test"
    => "test.test.test"
    [2] pry(main)> s.split('.', 1)
    => ["test.test.test"]
    [3] pry(main)> s.split('.', 2)
    => ["test", "test.test"]
    [4] pry(main)> s.split('.', 3)
    => ["test", "test", "test"]
    

    vs.

    [6] pry(main)> s
    => "test.test.test"
    [7] pry(main)> s.rsplit('.', 1)
    => ["test.test", "test"]
    [8] pry(main)> s.rsplit('.', 2)
    => ["test", "test", "test"]
    

    But I can't quite work out how to short split it.

提交回复
热议问题