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
On 2007-01-07 01:21:54 +0100, “Claus G.” [email protected] said:
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:
Did I reinvent the wheel or does it make sense to add it to String?
I’d just do str.slice!(-n … -1) instead:
str = “Hello World”
str.slice!(-3 … -1) # => “rld”
str # => “Hello Wo”
str.slice!(-1 … -1) # => “o”
str # => “Hello W”
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
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:
You can index strings from the right with negative numbers:
“abcdef”[-3…-1] => “def”
I think that might be all you need.
I see. Thank you very much for all the replies.
regards
Claus
Claus G. wrote:
@t = t.to_s
if s < @n
Claus
If the length of the string is less than 3,
the entire string will be returned.
s = “ab”
s[ /.{0,3}$/ ]
s[-3,3] || s
On Sun, 7 Jan 2007, Claus G. wrote:
@t = t.to_s
if s < @n
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?
You can index strings from the right with negative numbers:
“abcdef”[-3…-1] => “def”
I think that might be all you need.
David