[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Stripping characters off a string

Chris Causer

10/21/2008 3:28:00 PM

[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

7 Answers

Hugh Sasse

10/21/2008 3:33:00 PM

0



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"
>
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

Evgeniy Dolzhenko

10/21/2008 3:40:00 PM

0

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
>

Chris Causer

10/21/2008 4:18:00 PM

0

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

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?


Brilliant. Thanks Evgeniy, thanks Hugh.

Marc Heiler

10/21/2008 7:12:00 PM

0

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

--
Posted via http://www.ruby-....

Chris Causer

10/21/2008 10:18:00 PM

0

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

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"


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

Sebastian Hungerecker

10/21/2008 10:23:00 PM

0

Chris Causer wrote:
> > 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: sepp2k@jabber.org
ICQ: 205544826

Chris Causer

10/21/2008 10:38:00 PM

0

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

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)
>

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

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