From: Robert Dober Date: 2007-07-20T20:25:14+09:00 Subject: Re: Is there a replacement for sub? On 7/20/07, Michael W. Ryder <_mwryder@worldnet.att.net> wrote: > I was trying to come up with a way to remove x instances of a character > from a string and came up with a problem. If I enter: > > a = "a b c d e f" > for i in 1..3 > a = a.sub!(' ', '') > end > puts a ==> returns 'abcd e f' which is correct. > > But if I enter: > > a = "a b c d e f" > for i in 1..10 > a = a.sub!(' ', '') > end > puts a ==> returns error.rb:3: private method `sub!' called for > nil:NilClass (NoMethodError, and a is now nil. > > What I am looking for is a way to remove the first n instances of a > blank from the string without wiping out the string if it does not > contain at least n blanks. I assume there is a way to do this with > regular expressions, but have not found it yet. This is something an > editor I liked, UCEDIT, on the CDC Cyber had in the 70's. > > I was reading this whole thread and I kind of think to be dreaming, I must have missed something obvious!!! Anyway maybe this is was OP wants, well I think it is ;) 529/29 > irb irb(main):001:0> a='a b c d e f' => "a b c d e f" irb(main):002:0> a.gsub!(" ","") => "abcdef" irb(main):003:0> a => "abcdef" irb(main):004:0> Consider however using the non inplace version, like e.g. b = a.gsub(" ","") HTH Robert -- I always knew that one day Smalltalk would replace Java. I just didn't know it would be called Ruby -- Kent Beck