On 2007-01-28 11:20:27 +0100, Robert Klemme <shortcutter / googlemail.com> said: > On 28.01.2007 11:13, Josselin wrote: >> I have the following string >> id = "(48.88689971942316, 2.3380279541015625)" >> is there any method to transform directly into an array >> [48.88689971942316, 2.3380279541015625] or should extract both parts >> and create the array (what I did.. but not very DRY) > > In this simple case you can do: > > >> id = "(48.88689971942316, 2.3380279541015625)" > => "(48.88689971942316, 2.3380279541015625)" > >> id.scan /\d+\.\d+/ > => ["48.88689971942316", "2.3380279541015625"] > >> id.scan(/\d+\.\d+/).map! {|x| x.to_f} > => [48.8868997194232, 2.33802795410156] > > It depends on the values that can occur in the string if this is > sufficient (for example, the piece above does not take care of signs > also does not recognize numbers without decimals). You can find plenty > solutions for matching floating point numbers in the archives of this > list / newsgroup. > > Generally, if you get this string from some piece of external code, you > want to parse it in some way to make sure it matches your expectations. > > Kind regards > > robert thanks Robert, better that what I originally wrote : (suppressing parenthesis then split on comma) @point = id.tr('()', ' ').split(',')