Josselin
1/29/2007 6:58:00 AM
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(',')