Hi --

On Fri, 13 Feb 2004, Koncept wrote:

> In article
> <XOCWb.33248$TPZ.8375 / twister01.bloor.is.net.cable.rogers.com>, Mike
> Stok <mike / stok.co.uk> wrote:
> 
> > Alternatively, if the data is "well behaved", you can use a regular
> > expression to pick it apart.  Using irb (interactive ruby to experiment:
> > 
> > >> result = '{ "robert", "trey", "adrian", "pat" }'
> > => "{ \"robert\", \"trey\", \"adrian\", \"pat\" }"
> > >> result.scan(/"(.*?)"/).flatten
> > => ["robert", "trey", "adrian", "pat"]
> >
> 
> Forgive me if I am missing something...

You are missing something, and I forgive you :-)

> irb(main):001:0> result = '{ "robert","trey","adrian", "pat" }'
> => "{ \"robert\",\"trey\",\"adrian\", \"pat\" }"
> 
> irb(main):002:0> result.scan(/"(.*?)"/).flatten
> => ["robert", "trey", "adrian", "pat"]
> 
> irb(main):004:0> result.class
> => *String*
> 
> irb(main):005:0> result = ["robert","trey","adrian","pat"]
> => ["robert", "trey", "adrian", "pat"]
> 
> irb(main):006:0> result.class
> => *Array*
> 
> Your solution formatted my string to look like an Array, but the result
> still has a class of String. :(
> 
> How can I cast this String as an Array?

You can't (no such thing), but you can achieve what you need by saving
the results of your scan operation:

  result_array = result.scan(/"(.*?)"/).flatten

or if you want to re-use the same variable name:

  result = result.scan(etc....)

Right now you're performing a scan and then discarding the resulting
array.  


David

-- 
David A. Black
dblack / wobblini.net