Parsear de cadena

Buenas, estoy intentando extraer información de esta cadena:

BOX(33.03 41.5,36.25 43.5)

El formato es bien sencillo, comienza con “BOX(”, después un par de
flotantes, una coma, otro par de flotantes y cerramos paréntesis. Cómo
puedo extraer estos valores en Ruby??

Estoy verdísimo en el tratamiento de cadenas de Ruby, así que
agradecería que me ayudáseis. Muchas gracias de antemano!

Se puede hacer con expresiones regulares, pero no estoy tan ágil como
para
pensarlo, así que te lo digo a la manera bruta

a = “BOX(33.03 41.5,36.25 43.5)”
a = a.gsub(“BOX(”,"") # Sustituyes el texto BOX( por una cadena vacía
a = a.gsub(")","") # Quitas el último paréntesis
resultado = a.split(",") # Conviertes la cadena en un array cuyos
valores
están separados por la coma

así que para recuperar la primera pareja de valores lo harías con
resultado[0] y para la segunda resultado[1]

Y si quieres cada valor de los separados por espacio, pues :

flotante = resultado[0].split(" ")[0] # Devolvería la cadena 33.06, y si
la
quieres tratar como flotante, le añades to_f.

Así: flotante = resultado[0].split(" ")[0].to_f # Ya tienes el flotante
1º

hola

Buenas, estoy intentando extraer información de esta cadena:

BOX(33.03 41.5,36.25 43.5)

algo así te puede valer
cadena.scan(/(\d+.?\d*)/)

Te admite también que tengas números sin decimales y que aparezcan más
de cuatro números. Ignorará todo lo que no sean dígitos de la cadena. Lo
mismo hay una expresión regular más sencilla, pero ésa funciona :wink:

Para dudas sobre lo que significan los caracteres raros, la pista que te
pondrá en el buen camino en google o similares es “expresión regular” o
“regexp”

suerte,

javier ramirez

Otra forma

require ‘scanf’
a,b,c,d = ‘BOX(33.03 41.5,36.25 43.5)’.scanf(“BOX(%f %f,%f %f)”)

un saludo

javier ramirez
escribió:> hola

javier ramirez
escribió:> Te admite también que tengas números sin decimales y que aparezcan más

de cuatro números. Ignorará todo lo que no sean dígitos de la cadena. Lo
mismo hay una expresión regular más sencilla, pero ésa funciona :wink:

Perfecto, muchísimas gracias. Las expresiones regulares de Ruby son una
asignatura que tengo pendiente. Me pondré a ello.