Cómo convertir caracteres a números<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Estimados,
Tengo los datos siguientes y por mucho que intenté no puedo hacer que la nueva columna de fórmula sea numérica.
¿Alguien podría ayudar por favor?
Muchas gracias de antemano

Re: Cómo convertir caracteres a númerosDadas todas las preguntas y la extensión de esta publicación.Sólo te haré saber que valdría la pena dedicar una hora a estudiar expresiones regulares.Las expresiones regulares son una técnica de programación muy común, universal y se pueden encontrar en casi todos los lenguajes de programación.Las expresiones regulares pueden hacer de todo y más.
La guía de secuencias de comandos JSL tiene una subsección muy buena que debería cubrir todo lo que necesita saber sobre la función regex().Y también hay muchos videos de YouTube que profundizan.
Re: Cómo convertir caracteres a númerosMuchas gracias, ambos funcionan.
Re: Cómo convertir caracteres a númerosSaitcopuroglu,
Debería poder utilizar la siguiente fórmula:
Num(Palabra(1,:Puntuación, "/"))/Num(Palabra(1,:Puntuación, "/"))
dave
Re: Cómo convertir caracteres a númerosNo he leído el hilo completo. Pero quizás esto esté cerca (si puede depender del delimitador de 'división'):
Nueva tabla ("Convertir fracción de caracteres",
Agregar filas (4),
Nueva columna( "Fracción de caracteres",
Personaje,
"Nominal",
Establecer valores( {"4/5", "3/2", "27/26", "122/37,6"})
),
Nueva columna( "Resultado",
Numérico,
"Continuo",
Formato( "Dic fijo", 12, 3 ),
Fórmula(
Num( Recortar( Palabra( 1, :Fracción de caracteres, "/" ) ) ) /
Num( Recortar( Palabra( 2, :Fracción de caracteres, "/" ) ) )
)
)
);
Re: Cómo convertir caracteres a númerosEstimados,
De nuevo al mismo tema, esta vez no puedo crear una columna de fórmula que divida el primer número entre el segundo número (4/5, 44./5, 7.3/10...etc...)
Resta no funciona porque no tiene la misma longitud, Sustituto no es un camino a seguir Palabras No se pueden separar los personajes....
¡muchas gracias!

Re: Cómo convertir caracteres a númerosCreo que veo una comilla dentro de la cadena citada en la imagen que proporcionaste.Las cadenas JMP también necesitan escapes y resulta confuso.Intente usar \!" para reemplazar " en la cadena.el apóstrofo (' ) está bien, sólo las comillas ( " ) necesitan ayuda.Recibo varios cuadros de diálogo de error cuando lo hago mal.No estoy seguro de por qué ves un bloqueo, tal vez el cuadro de diálogo esté detrás de la ventana.
Minúsculas(Regex(:texto fuente, "[!'\!"+%/=()]+", " ", GLOBALREPLACE))
Re: Cómo convertir caracteres a númeroscuando lleno la expresión con signos de exclamación, JMP deja de funcionar y me obliga a forzar el cierre de toda la aplicación, ¿estoy haciendo algo mal?
la captura de pantalla es donde JMP se congeló, no sé exactamente qué signo de exclamación lo causó...

Re: Cómo convertir caracteres a númerosSí, si GLOBALREPLACE funcionará en lugar de un bucle for, será mucho más rápido por varias razones: el bucle interno será más rápido que el bucle JSL y la expresión regular interna GLOBALREPLACE no comienza de nuevo después de cada reemplazo y la cadena de resultado. Se construye en una sola pasada.Lo que marca una gran diferencia si hay muchos reemplazos en una cadena larga.
Re: Cómo convertir caracteres a númerosNo conocía la opción GLOBALREPLACE. Gracias por indicármelo. Adiós bucles Regex.
Re: Cómo convertir caracteres a númerosNew Table( "Untitled", Add Rows( 2 ), New Column( "source text", Character, "Nominal", Set Values( {"AbCd!@#GhI!!31", "aa BB CCCC"} ) ), New Column( "formula column", Character, "Nominal", Formula( Lowercase( Regex( :source text, "[!@# ]+", " ", GLOBALREPLACE ) ) ) )) La expresión regular significa:
[...] define un conjunto de caracteres, en este caso, bang, at, libra y espacio.Bueno, así es como yo los llamo.el plus significa uno o más de los elementos del conjunto.El único problema es qué caracteres del conjunto deben tener como escape una barra invertida: expresiones regulares: ¿Qué caracteres especiales se deben utilizar como escape en las expresiones regulares? - Desbordamiento de pila dice que los caracteres para escapar dentro de [ ] son ^-]\ (que incluye el carácter \ escape, por supuesto). Si necesita un signo menos en el conjunto, puede agregarlo como "[!@# \-]+".También puedes escapar de otros personajes, pero eso dificulta la lectura, ¡y el! es especialmente difícil ya que choca con el escape de JSL: "[\!\!\@\#\ \-]+" (¡guau!\!\ es un \, entonces ! es él mismo).
la expresión regular coincide con series de caracteres en el conjunto y los reemplaza con un solo espacio.GLOBALREPLACE significa repetir la operación tantas veces como sea posible.
write("[\!\!\@\#\ \-]+")[\!\@\#\ \-]+El sitio al que me refiero para obtener ayuda con expresiones regulares es Tutorial de expresiones regulares: aprenda a utilizar expresiones regulares
Re: Cómo convertir caracteres a númerosGracias MS,
Gracias jvillaumie,
¡Ambos funcionan muy bien!
Estoy continuamente revisando los tutoriales, libros, ayuda, webcasts pero a veces cuando se trata de acción falta algo muy simple. En este ejemplo conocía la función Sustituto pero no sabía que podía estar rodeada por otro Sustituto y otro y otro y por funciones de colapso de espacios en blanco y minúsculas...
Muchas muchas gracias nuevamente, me ahorró 8 minutos por cada día de mi vida de descanso...
Re: Cómo convertir caracteres a númerosPara obtener una fórmula un poco más simple, use múltiples argumentos en Sustituto().
Por ejemplo:
Sustituto ( : Comentario , "!" , " " , "+" , " " , "%" , " " , "_" , " " , "-" , " " , "?" , " " ) ;
Re: Cómo convertir caracteres a númerosSaitcopuroglu, puedes usar sustituto() para reemplazar cualquier cadena que desees (y los caracteres especiales son cadenas). Puede tener varios sustitutos "dentro" uno del otro, y cada uno sustituye un carácter especial por un espacio " ", o nada "" o lo que quiera "realmente cualquier cosa".
Luego hay funciones de caracteres separadas para eliminar espacios en blanco y pasar a minúsculas.
La ayuda de JMP (F1) para funciones de caracteres es realmente buena para ver qué se puede hacer; tal vez quieras echarle un vistazo.
Encontrarás la fórmula de la última columna pegada debajo de la imagen para que puedas reutilizarla fácilmente. Agregue más Sustitutos() según sea necesario para eliminar otros caracteres especiales que me he perdido.

Minúsculas(Contraer espacios en blanco(Sustituto(Sustituto(Sustituto(Sustituto(Sustituto(Sustituto(:Comentario, "!", " "), "+", " "), "%", " "), "_", " " ), "-", " "), "?", " ")))
Re: Cómo convertir caracteres a númerosEstimado Craig,
Gracias por el enlace tan útil.
Estuve esperando durante mucho tiempo las capacidades jsl de CTRL+F y la función REPLACE. Hay una línea al respecto en su enlace, pero no pude lograrlo.
Tengo una columna (comentario) llena de texto y me gustaría reemplazar todos los signos de exclamación con espacios y luego contraer los espacios en blanco y ponerlos todos en minúsculas.
¿Para qué debería ser el jsl?
encontrar "'" +! % / = ( ) : ; ? _ – ; - . , " y reemplazar con " "
colapsar espacios en blanco
hacer minúsculas
Muchas gracias de antemano

Re: Cómo convertir caracteres a númerosSaitcopuroglu,
Aquí hay una tabla simple con la fórmula en la segunda columna que ilustra la función de Munger.
dave
Re: Cómo convertir caracteres a númerosFunciones de cadena de caracteres JSL
Re: Cómo convertir caracteres a númerosgracias dlee0416, ¿podrías enviar la tabla de datos jmp? No estoy familiarizado con la función Munger y siempre son bienvenidos conocimientos adicionales. muchas gracias
Re: Cómo convertir caracteres a númerosNo es para vencer a un caballo muerto, pero aún puedes usar la opción Num(Substr(….) haciendo lo siguiente.
Re: Cómo convertir caracteres a números¡Exactamente!
Solo cambiar todas las comas a puntos resolvió el problema por sí solo con función de resta pero con función sustituta es más seguro en caso de que se muestren datos con menos de 5 decimales (1.50000 »» 1.5).
¡Muchas gracias a todos los propietarios de entradas por su apoyo! (Y cambiaré mis preferencias locales de Reino Unido a EE. UU.)
Re: Cómo convertir caracteres a númerosSu separador de decimales es una coma, es posible que deba cambiarlo a un punto para que num() funcione. Tengo que hacerlo, estando en el Reino Unido. Es posible que sus preferencias locales le permitan trabajar con la coma.
Además, usar substr() funcionará solo si todos sus valores de paridad tienen la misma cantidad de dígitos. Si el número de dígitos aumenta, recortará el valor, y si el número de dígitos disminuye, substr() mantendrá algunos de los caracteres USD y num() no funcionará en absoluto. Le sugiero que use sustituto() en lugar de substr() para reemplazar "USD" por nada y reemplazar "," por "."

Re: Cómo convertir caracteres a númerosY si desea agregar la moneda, simplemente vaya a la información de la columna y agregue a la propiedad de la columna "Unidades" el valor "USD", obtendrá las Unidades entre paréntesis después del Nombre de la columna.
Re: Cómo convertir caracteres a números muestra datos faltantes

Re: Cómo convertir caracteres a númerosGracias, ya lo hice restando los primeros 7 dígitos (que se supone que son números) pero no puedo cambiar la nueva columna de fórmula de char a num
Re: Cómo convertir caracteres a númerosRodea lo que tienes con número() .Eso convertirá una cadena en un número.
Re: Cómo convertir caracteres a númerosCreo que todo lo que necesitas hacer es usar el comando 'Num' delante del comando 'Substr' y convertirlo a numérico:
Núm(Substr( tu columna aquí, 1,7))
Espero que esto solucione tu problema.
dave
Re: Cómo convertir caracteres a númerosSaitcopuroglu,
Debes quitar el "USD" de los datos de las filas.JMP ve esto como datos de caracteres y no le permitirá cambiar a numérico. Necesitará Buscar y reemplazar o Recodificar para intentar hacer el cambio un poco más fácil para usted con más de 1400 filas.
Mejor,
Factura