[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

read variables from string

daniel

7/25/2007 3:09:00 PM

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

5 Answers

cardboard42@gmail.com

7/25/2007 3:34:00 PM

0

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

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

Harry Kakueki

7/25/2007 3:39:00 PM

0

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?
>
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 English
http://www.ka...

daniel

7/25/2007 9:42:00 PM

0

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

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

dblack

7/25/2007 9:53:00 PM

0

Tim Hunter

7/25/2007 10:01:00 PM

0

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/EXA...

--
RMagick OS X Installer [http://rubyforge.org/project...]
RMagick Hints & Tips [http://rubyforge.org/forum/forum.php?for...]
RMagick Installation FAQ [http://rmagick.rubyforge.org/instal...]