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
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
···
On Wed, 22 Oct 2008, Chris Causer wrote:
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"
Isn't it like
a = a[0..-5]
is what you are looking for?
···
On Tue, Oct 21, 2008 at 7:28 PM, Chris Causer <chy.causer@gmail.com> wrote:
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
Brilliant. Thanks Evgeniy, thanks Hugh.
···
On Tue, Oct 21, 2008 at 4:39 PM, Evgeniy Dolzhenko <dolzenko@gmail.com>wrote:
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"
···
--
Posted via http://www.ruby-forum.com/.
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'.
···
On Tue, Oct 21, 2008 at 8:11 PM, Marc Heiler <shevegen@linuxmail.org> wrote:
your_string = "abcdef" # => "abcdef"
your_string[-4,4] = '' # => ""
your_string # => "ab"
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.
In your case, you'd
just get the last 4 characters 'cdef'.
Leaving the characters "ab", which is exactly what he showed in the code
above.
···
--
Jabber: sepp2k@jabber.org
ICQ: 205544826
Ah, now I see. I missed the ='' on the second line.
Thanks Marc and Sebastian, but the range method is particularly alluring 
···
On Tue, Oct 21, 2008 at 11:22 PM, Sebastian Hungerecker < sepp2k@googlemail.com> wrote:
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)