Reverse a string in Ruby

前端 未结 22 1130
广开言路
广开言路 2020-12-05 06:36

How do you reverse a string in Ruby? I know about string#reverse. I\'m interested in understanding how to write it in pure Ruby, preferably an in-place solution.

22条回答
  •  余生分开走
    2020-12-05 07:03

    There's already an inplace reverse method, called "reverse!":

    $ a = "abc"
    $ a.reverse!
    $ puts a
    cba
    

    If you want to do this manually try this (but it will probably not be multibyte-safe, eg UTF-8), and it will be slower:

    class String
      def reverse_inplace!
        half_length = self.length / 2
        half_length.times {|i| self[i], self[-i-1] = self[-i-1], self[i] }
        self
      end
    end
    

    This swaps every byte from the beginning with every byte from the end until both indexes meet at the center:

    $ a = "abcd"
    $ a.reverse_inplace!
    $ puts a
    dcba
    

提交回复
热议问题