Getting last character from a string

Hello
I'm new to Ruby. I've a simple question.
Is there a more readable way to get last character from string than this
one? :

x = "text"
last_char = x[x.length-1, x.length-1]

···

--
Posted via http://www.ruby-forum.com/.

Hello

Hello.

I'm new to Ruby.

Welcome then.

I've a simple question.
Is there a more readable way to get last character from string than this
one? :

x = "text"
last_char = x[x.length-1, x.length-1]

Strings can take a negative index, which count backwards from the end of the String, and an length of how many characters you want (one in this example). Using that:

   "test"[-1, 1] # => "t"

Hope that helps.

James Edward Gray II

···

On Feb 11, 2006, at 6:07 PM, draco draco wrote:

You can do:
last_char = x[-1,1]
or # possibly too arcane
last_char = x.split('').last

The second has the advantage of being (I think) multibyte-character safe.

···

On 2/11/06, draco draco <thedraco@go2.pl> wrote:

Hello
I'm new to Ruby. I've a simple question.
Is there a more readable way to get last character from string than this
one? :

x = "text"
last_char = x[x.length-1, x.length-1]

draco draco wrote:

Hello
I'm new to Ruby. I've a simple question.
Is there a more readable way to get last character from string than this one? :

x = "text"
last_char = x[x.length-1, x.length-1]

last_char = x[-1,1]

A negative index counts from the right-hand end of the string.

draco draco wrote:

Hello
I'm new to Ruby. I've a simple question.
Is there a more readable way to get last character from string than this
one? :

x = "text"
last_char = x[x.length-1, x.length-1]

"abc"[ -1..-1 ]

"abc".slice(-1,1)

"abc".slice(-1).chr

"abc"[ /.$/ ]

"abc".reverse[0,1]

"abc".split('').pop

class String
  def last
    self[-1,1]
  end
end

"abc".last

Wow :slight_smile:

x[-1,1] looks far more readable than x[x.length-1, x.length-1]

Thanks a lot :slight_smile:

···

--
Posted via http://www.ruby-forum.com/.