
Búsqueda y reemplazo simples
El lenguaje de programación de JMP, JSL, puede almacenar números, cadenas y otros objetos en variables. Una asignación de cadena podría verse así:
place = "Cary, North Carolina, USA";
La variable lugar ahora sostiene la cuerda. Aquí hay un conjunto de funciones para trabajar con cadenas en JSL.Lugar mantendrá esa misma cadena en todos los ejemplos. Las expresiones regulares y la coincidencia de patrones se tratan en publicaciones posteriores.
Concatenación - juntar dos hilos, de punta a punta. O más de dos...
sentence = "My home is " || place || ".";
"Mi casa es Cary, Carolina del Norte, EE. UU."
Longitud - ¿Cuántos caracteres hay en la cadena?
Write( place, " ", Length( place ) );
Cary, Carolina del Norte, EE.UU. 25
Contiene - ¿Qué parte de la cadena contiene este texto?
positionA = Contains( place, "," );
positionB = Contains( place, ",", 1 + positionA );
Show( positionA, positionB );
posiciónA = 5;
posiciónB = 21;
Observe cómo se encuentra la posición B comenzando un carácter después de la posición A. De lo contrario, se volvería a encontrar la primera coma en la posición A. Contiene devuelve una posición de 0 si la búsqueda falla, haciendo si( contiene(...), ... ) funciona muy bien.
substrato - parte de la cuerda, comenzando en una posición, a lo largo de una longitud.
state = Substr( place, 1 + positionA, positionB - (1 + positionA) );
" Carolina del Norte"
Observe también el espacio después de que se haya capturado la primera coma. Si omite el argumento de longitud, substr llega al final. También existe una regla para una posición inicial negativa:
Substr( place, -3, 2 );
"A NOSOTROS"
-3 significa comenzar 3 caracteres desde el final.
Recortar - elimina esos molestos espacios en blanco
state = trim( state, "left" ); // or "right" or "both"
"Carolina del Norte"
Izquierda - cierta cantidad de caracteres del extremo izquierdo (frontal) de la cadena
Left( place, positionA - 1 );
"cari"
positionA es 5, la posición de la primera coma; "Cary" son los 4 caracteres antes de la coma. Hay un tercer argumento a favor del texto de relleno:
Left( "abc", 15, "@#$*" );<BR />
"abc@#$*@#$*@#$*"
Observe cómo se agrega suficiente texto de relleno para proporcionar los 15 caracteres solicitados desde la izquierda de "abc". El espacio podría ser una mejor opción de relleno. Sin el relleno, el resultado es simplemente "abc".
Bien - algún número de caracteres del extremo derecho (posterior) de la cadena
Right( place, 3 ); // like Left, there is a fill option
"EE.UU"
Utilice Substr en lugar de right si tiene una posición
Substr( place, positionB + 2 ); // +2 goes past the comma and the space
"EE.UU"
Substr no requiere un tercer valor para la longitud; llegará hasta el final.
Tú podría use Derecha con una posición y la función Longitud, pero cuando haya explicado cómo restar una posición a una longitud, será más complicado.
Munger - un mil usos...
Munger busca y reemplaza juntos. No es tan inteligente ni tan conocido como Regex, pero es más fácil de entender una vez que lo dominas. Nadie más podrá descubrir qué está haciendo su JSL sin un manual, por lo que es posible que desee omitirlo.
result = Munger( source, startPosition, textOrLength, optionalReplacementText );
Aquí hay una tabla que intenta explicar las diversas combinaciones de textOrLength y optionReplacementText. Todos los ejemplos utilizan 3 para la posición inicial, omitiendo la "ab" inicial. Observe el cuarto ejemplo para encontrar la segunda "b".
| |
sin reemplazo |
texto de reemplazo = "$*?" |
| Munger("abcabc", 3, 2, ? ) |
"California" |
"ab$*?bc" |
| Munger("abcabc", 3, 0, ?) |
"" |
"ab$*?cabc" |
| Munger("abcabc", 3, 99, ?) |
"cabc" |
"ab$*?" |
| |
|
|
| Munger("abcabc", 3, "b", ?) |
5 |
"abca$*?c" |
| Munger("abcabc", 3, "Q", ?) |
0 |
"abcabc" |
| Munger("abcabc", 3, "", ?) |
0 |
"abcabc" |
Si lo miras el tiempo suficiente, todos los resultados son útil de manera autoconsistente. Si no hay ningún texto para buscar, sólo una longitud, Munger devuelve la subcadena. Si hay texto de reemplazo, devuelve el original con la subcadena reemplazada. Pero si hay texto para buscar, no hay razón para devolver el texto encontrado, por lo que si no hay texto de reemplazo obtendrá la posición del texto encontrado. Si hay texto de reemplazo, obtendrá la cadena original con la subcadena reemplazada. El caso extraño es la última línea, que podría cumplir o no con sus expectativas de encontrar una cadena vacía. Tampoco utilice posiciones y longitudes negativas. No agregarán ninguna claridad aquí y no funcionan como substr().
Ejemplo
Las fórmulas de las columnas de la tabla de datos pueden calcular un valor de otra columna. A continuación se muestra un ejemplo de "apellido, nombre" que supone que la coma es un delimitador único. Este ejemplo funciona para el caso "solo nombre" debido a la forma en que Left interpreta cualquier longitud fuera de rango como todo. Busque la publicación Regex, puede que le guste más.
Column formula using Left() and Contains()Column formula using Left() and Contains()Column formula using Left() and Contains()Column formula using Left() and Contains()Column formula using Left() and Contains()Fórmula de columna usando Left() y Contiene()
Column formula using substr() and contains()Column formula using substr() and contains()Column formula using substr() and contains()Column formula using substr() and contains()Column formula using substr() and contains()Fórmula de columna usando substr() y contiene()
editar 30 de septiembre de 2017: reparar formato