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
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
Perfecto, muchísimas gracias. Las expresiones regulares de Ruby son una
asignatura que tengo pendiente. Me pondré a ello.