# Stripping characters off a string

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

On Wed, 22 Oct 2008, Chris Causer wrote:

=> “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

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

your_string = “abcdef” # => “abcdef”
your_string[-4,4] = ‘’ # => “”
your_string # => “ab”

On Tue, Oct 21, 2008 at 8:11 PM, Marc H. [email protected]
wrote:

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’.

Chris Causer wrote:

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)

I always thought that

‘string’[a,b]

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

That’s right.

just get the last 4 characters ‘cdef’.

Leaving the characters “ab”, which is exactly what he showed in the code
above.

On Tue, Oct 21, 2008 at 4:39 PM, Evgeniy D.
[email protected]wrote:

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

Brilliant. Thanks Evgeniy, thanks Hugh.

On Tue, Oct 21, 2008 at 11:22 PM, Sebastian H. <
[email protected]> wrote:

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

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