Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.ruby > #2526

Re: String.gsub with regex and block

From Alexey Petrushin <axyd80@gmail.com>
Newsgroups comp.lang.ruby
Subject Re: String.gsub with regex and block
Date 2011-04-08 07:31 -0500
Organization Service de news de lacave.net
Message-ID <f5538c33624d85f5e6f07bfa139bcc49@ruby-forum.com> (permalink)
References <0be3e165974797b12de3053911b6f7e2@ruby-forum.com>

Show all headers | View raw


Thanks for advices, I didn't know about $~ containting arrays of 
results, add new 'substitute' method is probably the best solution.

> This solution is not very generalizable.  It only works as presented for
> cases where all the stuff you want to discard looks the same.
No, it's no less generalizable than $X stuff, use splats if You have 
different matches.
"John Smith".substitute{|*tokens| ...}

And yes the provided sample is unclear, there where actually no 
replacement, maybe it should be something like that:

    "John Smith".gsub /(.+)\s(.+)/ do |name, family|
      "#{name[0..0]}. #{family}"
    end


Here's the complete solution:

    class String
      def substitute(*args)
        gsub(*args){yield Regexp.last_match.captures}
      end

      def substitute!(*args)
        gsub!(*args){yield Regexp.last_match.captures}
      end
    end

Thanks for help!

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

Back to comp.lang.ruby | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

String.gsub with regex and block Alexey Petrushin <axyd80@gmail.com> - 2011-04-07 10:25 -0500
  Re: String.gsub with regex and block Reid Thompson <Reid.Thompson@ateb.com> - 2011-04-07 10:36 -0500
    Re: String.gsub with regex and block Brian Candler <b.candler@pobox.com> - 2011-04-08 02:20 -0500
  Re: String.gsub with regex and block Brian Candler <b.candler@pobox.com> - 2011-04-07 10:50 -0500
    Re: String.gsub with regex and block 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-07 13:22 -0500
  Re: String.gsub with regex and block Brian Candler <b.candler@pobox.com> - 2011-04-07 10:57 -0500
  Re: String.gsub with regex and block 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-07 13:10 -0500
    Re: String.gsub with regex and block Phillip Gawlowski <cmdjackryan@googlemail.com> - 2011-04-07 13:39 -0500
  Re: String.gsub with regex and block jake kaiden <jakekaiden@yahoo.com> - 2011-04-07 15:57 -0500
    Re: String.gsub with regex and block Sergey Avseyev <sergey.avseyev@gmail.com> - 2011-04-07 22:09 -0700
  Re: String.gsub with regex and block Alexey Petrushin <axyd80@gmail.com> - 2011-04-08 07:31 -0500

csiph-web