Regex convierte texto en númerosTengo una propiedad que figura en una columna (Dispositivo en este caso) que contiene una cadena. En algún lugar dentro de la cadena hay una referencia a un valor numérico que necesito extraer y convertir a un número real.
La fórmula a continuación funciona, pero parece que podría hacerse de una manera mucho más sencilla.
Regex( Substr( :Device, 6 ), "K", "000", GLOBALREPLACE )
Cualquier instancia de 1K se reemplaza por 1000 en este caso.
Adiós
Cabeza de llave inglesa
Automatización y scriptingRe: Regex convierte texto en números
Esto podría hacerse de una manera mucho más sencilla.
¿Qué consideras que es mucho más sencillo?
Re: Regex convierte texto en númerosjarmo
Num( Regex( :Device, "(\d+)K", "\1" ) ) * 1000
¿Este?
Adiós
Cabeza de llave inglesa
Re: Regex convierte texto en númerosEntonces... ¿usar eso...? Estos son muy específicos para sus datos y aplicación (por ejemplo, normalmente "k" sería kilo , no "K")
Si tienes que convertir números escritos como cadenas en números, diría que nunca hay una única solución sencilla para eso (un buen ejemplo podría ser Excel, que simplemente asume algo y arruina totalmente tus datos de manera irreversible).
Re: Regex convierte texto en númerosAquí hay un ejemplo sencillo que utiliza JSL
names default to here(1);
dt = New Table( "example",
Add Rows( 2 ),
New Column( "val", Character, "Nominal", Set Values( {"1K", "5K"} ) )
);
wait(5);
// Convert the values
for each row(
:val = Substitute(:val,"K","000")
);
wait(0);<BR /><BR />// Change column to numeric
dt:val << data type(numeric)<<MODELING type=""></MODELING>Re: Regex convierte texto en númerosjarmo
Todas estas cosas funcionan y tienes razón, mi problema es muy específico, eso le puede pasar a la gente a veces. La solución a la que hice referencia se complica si hay más de una letra K (por defecto, mayúsculas en mi salida de datos estándar) en mis datos.
Gracias de todos modos
Adiós
Cabeza de llave inglesa