Read variables from string

Hi,

I would like to extract an array of e.g. integers or floats from a
string:

s = "1234" -> [12,34]
s = "12.413.423.7" -> [12.4,13.4,23.7]

How can I use unpack for that? What format string do I need for the
two examples above?

Where can I find more examples of the unpack method, than in the ruby-
doc.org?

Thanks for your help
Daniel

I don't really know how to use unpack, and I'm not positive it's
appropriate for this situation anyway.
This works though:

def extract str
  str.scan(/(\d{2})(\.\d)?/).collect { |a| a.join }
end

extract "1234" => ["12,"34"]
extract "12.413.423.7" => ["12.4","13.4","23.7"]

My regexp-fu is a little rusty so maybe there's a better way to do
that.

Bored at work today...
Ken

···

On Jul 25, 11:09 am, daniel <daniel.leuenber...@gmx.ch> wrote:

Hi,

I would like to extract an array of e.g. integers or floats from a
string:

s = "1234" -> [12,34]
s = "12.413.423.7" -> [12.4,13.4,23.7]

How can I use unpack for that? What format string do I need for the
two examples above?

Where can I find more examples of the unpack method, than in the ruby-
doc.org?

Thanks for your help
Daniel

It depends on your rules for extracting data.

You can try something like this.

s = "1234" #-> [12,34]
t = "12.413.423.7" #-> [12.4,13.4,23.7]
p s.scan(/\d{2}/).map{|x| x.to_i}
p t.unpack("a4a4a4").map{|x| x.to_f}

There are probably better ways.

Harry

···

On 7/26/07, daniel <daniel.leuenberger@gmx.ch> wrote:

Hi,

I would like to extract an array of e.g. integers or floats from a
string:

s = "1234" -> [12,34]
s = "12.413.423.7" -> [12.4,13.4,23.7]

How can I use unpack for that? What format string do I need for the
two examples above?

--
A Look into Japanese Ruby List in English

Thanks for your input. But I was looking for something like an inverse
of sprintf (where you can extract variables from a string according to
a given format, instead of gluing a string together from variables).
Does anybody know if something like this exists in ruby?

Thanks,
Daniel

···

On 25 Jul., 17:38, "Harry Kakueki" <list.p...@gmail.com> wrote:

On 7/26/07, daniel <daniel.leuenber...@gmx.ch> wrote:> Hi,

> I would like to extract an array of e.g. integers or floats from a
> string:

> s = "1234" -> [12,34]
> s = "12.413.423.7" -> [12.4,13.4,23.7]

> How can I use unpack for that? What format string do I need for the
> two examples above?

It depends on your rules for extracting data.

You can try something like this.

s = "1234" #-> [12,34]
t = "12.413.423.7" #-> [12.4,13.4,23.7]
p s.scan(/\d{2}/).map{|x| x.to_i}
p t.unpack("a4a4a4").map{|x| x.to_f}

There are probably better ways.

Harry

--
A Look into Japanese Ruby List in Englishhttp://www.kakueki.com/

Hi --

On 7/26/07, daniel <daniel.leuenber...@gmx.ch> wrote:> Hi,

I would like to extract an array of e.g. integers or floats from a
string:

s = "1234" -> [12,34]
s = "12.413.423.7" -> [12.4,13.4,23.7]

How can I use unpack for that? What format string do I need for the
two examples above?

It depends on your rules for extracting data.

You can try something like this.

s = "1234" #-> [12,34]
t = "12.413.423.7" #-> [12.4,13.4,23.7]
p s.scan(/\d{2}/).map{|x| x.to_i}
p t.unpack("a4a4a4").map{|x| x.to_f}

There are probably better ways.

Harry

--
A Look into Japanese Ruby List in Englishhttp://www.kakueki.com/

Thanks for your input. But I was looking for something like an inverse
of sprintf (where you can extract variables from a string according to
a given format, instead of gluing a string together from variables).
Does anybody know if something like this exists in ruby?

Yes: scanf.

irb(main):001:0> require 'scanf'
=> true
irb(main):002:0> "1234".scanf("%2d%2d")
=> [12, 34]
irb(main):003:0> "12.413.423.7".scanf("%4f%4f%4f")
=> [12.4, 13.4, 23.7]

David

···

On Thu, 26 Jul 2007, daniel wrote:

On 25 Jul., 17:38, "Harry Kakueki" <list.p...@gmail.com> wrote:

--
* Books:
   RAILS ROUTING (new! http://www.awprofessional.com/title/0321509242\)
   RUBY FOR RAILS (http://www.manning.com/black\)
* Ruby/Rails training
     & consulting: Ruby Power and Light, LLC (http://www.rubypal.com)

daniel wrote:

Thanks for your input. But I was looking for something like an inverse
of sprintf (where you can extract variables from a string according to
a given format, instead of gluing a string together from variables).
Does anybody know if something like this exists in ruby?
  

The opposite of printf is scanf: http://hypermetrics.com/rubyhacker/code/scanf/scanf-rdoc/files/EXAMPLES.html

···

--
RMagick OS X Installer [http://rubyforge.org/projects/rmagick/\]
RMagick Hints & Tips [http://rubyforge.org/forum/forum.php?forum_id=1618\]
RMagick Installation FAQ [http://rmagick.rubyforge.org/install-faq.html\]