Forum: Ruby general purpose chomp?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Michal Suchanek (Guest)
on 2007-05-08 14:12
(Received via mailing list)
I wonder why we do not have one. Or maybe I just overlooked something?

class String
  def lstripc c = ' \r\t\n'
    c = c.chr if c.kind_of? Integer
    idx = 0
    while c.include? self[idx]
      idx += 1
    end
    self[idx..-1]
  end
end

Thanks

Michal
Robert Dober (Guest)
on 2007-05-08 14:34
(Received via mailing list)
On 5/8/07, Michal Suchanek <hramrach@centrum.cz> wrote:
>   end
> end
>
> Thanks
>
> Michal
>
>
Some random thoughts
* Chomp strips on the RHS of the string, right?
* Sometimes I would just use sub /^<clever rgx>/, "" (or a potential
#delete as suggested in my RCR idea ;)
* I feel rgxs should be accepted as params
* I do not like the use a string with character set semantics (again
kindly have a look at the RCR thread where somebody smarter than me
has made a very good point about this).

That all said, this might actually be a nice feature to have, but
maybe there are just to many methods there, already doing *almost* the
same.
This is basically one of the reasons against my RCR idea too.

Cheers
Robert
Robert Klemme (Guest)
on 2007-05-08 14:36
(Received via mailing list)
On 08.05.2007 14:11, Michal Suchanek wrote:
>  end
> end

irb(main):016:0> s = "\r\n\tfoo"
=> "\r\n\tfoo"
irb(main):017:0> s.lstrip!
=> "foo"
irb(main):018:0> s
=> "foo"

If you want more control, the "general purpose" methods would be sub,
sub!, gsub and gsub!:

irb(main):001:0> s = "\r\n\tfoo"
=> "\r\n\tfoo"
irb(main):002:0> s.sub! %r{\A[\r\n\s]+}, ''
=> "foo"
irb(main):003:0> s
=> "foo"

irb(main):009:0> s = "\r\n\tfoo"
=> "\r\n\tfoo"
irb(main):010:0> s.sub! %r{\A\s+}, ''
=> "foo"
irb(main):011:0> s
=> "foo"

Regards

  robert
Michal Suchanek (Guest)
on 2007-05-08 14:51
(Received via mailing list)
On 08/05/07, Robert Klemme <shortcutter@googlemail.com> wrote:
> >    self[idx..-1]
> If you want more control, the "general purpose" methods would be sub,
> => "\r\n\tfoo"
> irb(main):010:0> s.sub! %r{\A\s+}, ''
> => "foo"
> irb(main):011:0> s
> => "foo"
>

Yes, sub! is the thing that would do chomp for things other than \r\n\t.
Not as easy but it surely works.

Thanks

Michal
Brian Candler (Guest)
on 2007-05-08 15:48
(Received via mailing list)
On Tue, May 08, 2007 at 09:33:43PM +0900, Robert Dober wrote:
> >    self[idx..-1]
> * Sometimes I would just use sub /^<clever rgx>/, ""
Except that would be wrong in this case, since it wouldn't only chomp
from
the left-hand side of the string.

Use /\A.../ not /^.../
This topic is locked and can not be replied to.