You can use String#[] with a Range instead:
 >> "asdfhsdfabc"[-3..-1]
=> "abc"

or you can specify the length:
 >> "asdfhsdfabc"[-3, 3]
=> "abc"

Negative numbers count from the end of the string.  So basically the 
strings length plus your negative number is the position from the start 
of the string.

Dan

Claus Guttesen wrote:
> Hi.
> 
> I need to get the last three characters in a string. I couldn't find a
> function in the String class so I came up with this:
> 
> class Remainder
> 
> attr_writer :n
> 
> def initialize(t = "", n = 0)
>   @t = t.to_s
>   @n = n.to_i
> end
> 
> def get
>   get_remaining_letters
> end
> 
> private
> def get_remaining_letters
>   s = @t.size
>   if s < @n
>     r = 0
>   else
>     r = s - @n
>   end
> 
>   ft = @t.slice(r, @n)
> end
> 
> end
> 
> 
> t = Remainder.new("Guttesen", 5)
> puts t.get
> tesen
> t.n = 4
> puts t.get
> esen
> 
> Did I reinvent the wheel or does it make sense to add it to String?
> 
> regards
> Claus
> 
>