Stripping characters off a string

C

Chris Causer

[Note: parts of this message were removed to make it a legal post.]

Hi everyone,


I know this is an easy question, but I want to know the best way to do this
(i.e. the most Rubyesque).

How do I strip the last four characters off a string of undetermined length?
I'm sure it is a one liner and doesn't require regexp. I currently have:

irb(main):010:0> a='80/tcp'
=> "80/tcp"
irb(main):011:0> a[0,a.length-4]
=> "80"

irb(main):010:0> b='5666/tcp'
=> "5666/tcp"
irb(main):011:0> b[0,a.length-4]
=> "5666"

Which is two lines, but I'm hoping you smart guys can help me out ;) I'm
guessing "chop" would work, but I'm not sure if that's the most elegant
solution

Cheers,

Chris
 
H

Hugh Sasse

Hi everyone,


I know this is an easy question, but I want to know the best way to do this
(i.e. the most Rubyesque).

How do I strip the last four characters off a string of undetermined length?
I'm sure it is a one liner and doesn't require regexp. I currently have:

irb(main):010:0> a='80/tcp'
=> "80/tcp"
irb(main):011:0> a[0,a.length-4]
=> "80"
How does:

irb(main):001:0> str = "80/tcp"
=> "80/tcp"
irb(main):002:0> str[0...-4]
=> "80"
irb(main):003:0>

look?
Hugh
 
C

Chris Causer

[Note: parts of this message were removed to make it a legal post.]

Isn't it like
a = a[0..-5]
is what you are looking for?


Brilliant. Thanks Evgeniy, thanks Hugh.
 
M

Marc Heiler

your_string = "abcdef" # => "abcdef"
your_string[-4,4] = '' # => ""
your_string # => "ab"
 
C

Chris Causer

[Note: parts of this message were removed to make it a legal post.]

your_string = "abcdef" # => "abcdef"
your_string[-4,4] = '' # => ""
your_string # => "ab"


Does that really work Marc? I always thought that

'string'[a,b]

was to take a substring beginning at a of length b. In your case, you'd just
get the last 4 characters 'cdef'.
 
S

Sebastian Hungerecker

Chris said:
your_string =3D "abcdef" # =3D> "abcdef"
your_string[-4,4] =3D '' # =3D> ""
your_string =A0 =A0 =A0 =A0 =A0 =A0# =3D> "ab"

Does that really work

Yes, it does. If you copy and paste that code into irb, you'll see the exac=
t=20
output you see above (minus the # plus newlines plus the irb prompt)

I always thought that=20

=A0'string'[a,b]

was to take a substring beginning at a of length b.

That's right.

In your case, you'd=20
just get the last 4 characters 'cdef'.

Leaving the characters "ab", which is exactly what he showed in the code=20
above.

=2D-=20
Jabber: (e-mail address removed)
ICQ: 205544826
 
C

Chris Causer

[Note: parts of this message were removed to make it a legal post.]

your_string = "abcdef" # => "abcdef"
your_string[-4,4] = '' # => ""
your_string # => "ab"

Does that really work

Yes, it does. If you copy and paste that code into irb, you'll see the
exact
output you see above (minus the # plus newlines plus the irb prompt)
[/QUOTE]

Ah, now I see. I missed the ='' on the second line.

Thanks Marc and Sebastian, but the range method is particularly alluring :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,902
Latest member
Elena68X5

Latest Threads

Top