31
Funciones de cadenas
Conjunto de Funciones de fórmula orientadas al manejo de cadenas.

base64ToString

Devuelve una cadena a partir de la cadena en base64.

Sintaxis

base64ToString(cadenaBase64, codec)

Parámetros

cadenaBase64
Expresión fórmula que debe contener una cadena en base 64.
codec
Cadena que contiene el nombre del juego de caracteres ASCII para la cadena que queremos obtener. Lista de codecs.

Ejemplo

Supongamos que en un manejador de evento de un formulario queremos convertir un campo objeto dibujo de la ficha que estamos editando a base64 y luego a cadena. El proceso sería:
Rem ( Convertimos el campo objeto a base64 )
Convertir campo objeto a base64 ( FOTO, BASE64, )
Libre
Rem ( Convertimos el base64 a cadena )
Set ( SZBASE64, base64ToString(BASE64,"ISO 8859-1") )

countString

Devuelve el número de veces que la cadena contiene la subcadena la búsqueda la hace por número de coincidencias.

Sintaxis

countString(cadena, subcadena)

Parámetros

cadena
Expresión alfabética de referencia.
subcadena
Expresión alfabética a buscar en la cadena.

Ejemplos

countString("velneo", "e" ) = 2
countString("bcaaaadefgh", "aa" ) = 3 (bcaaaadefgh, bcaaaadefgh, bcaaaadefgh).
countStrig("a", "") = 2 (devuelve una coincidencia por cada "no carácter", empezando por la posición 0. Si el segundo parámetro es dinámico, se recomienda controlarlo y no ejecutar el countString si está vacío).

fillString

Devuelve una cadena con la repetición de la que pasamos como parámetro.

Sintaxis

fillString(cadena, nRepeticiones)

Parámetros

cadena
Expresión alfabética a repetir.
nRepeticiones
Número de repeticiones.

Ejemplo

fillString("*", "4 ) = ****

getStringRegExp

Devuelve la cadena que se corresponde con la subexpresión regular a partir de la posición indicada teniendo en cuenta si distinguimos mayúsculas y minúsculas. Para la subexpresión 0 devuelve toda cadena.

Sintaxis

getStringRegExp(cadena, expresionRegular, posIni, caseSensitive, numSubExpresion)

Parámetros

cadena
Expresión alfabética de referencia.
expresionRegular
Expresión regular con el texto a encontrar en la cadena.
posIni
Posición inicial de la búsqueda.
caseSensitive
1 distingue mayúsculas y minúsculas, 0 no.
numSubExpresion
Si la expresión regular establecida en el segundo parámetro contiene varios grupos de expresiones regulares, en este parámetro podremos hacer que busque coincidencias de todas las subexpresiones (0) o de una en concreto; en cuyo caso escribiremos un valor comprendido entre 1 y el número total de subexpresiones declaradas. La primera subexpresión será la 1, la segunda la 2 y así sucesivamente.
Ver el capítulo expresiones regulares para saber cómo se construye una expresión regular.

Uso del parámetro numSubExpresion de la función getStringRegExp

Tal y como se explica en el capítulo capítulo expresiones regulares, podemos agrupar distintas subexpresiones de una expresión regular simplemente cerrándolas entre paréntesis. Si en la expresión regular escribimos (a)|(b)|(c) y el parámetro numSubExpresion de esta función es 0, se buscarán coincidencias de las tres subexpresiones, es decir, de “a”, “b” o “c” en la cadena. Si quisiésemos que solamente se buscasen coincidencias de una de ellas, por ejemplo b, sin tener que modificar la expresión regular, bastará con escribir en el parámetro numSubExpresion de esta función en valor 2 que se corresponde con el número de subexpresión declarado; (a) sería 1 y (c) sería 3.

Ejemplos

getStringRegExp("Hay 1235 personas", "\\d{1,3}", 0, 0, 0) = 123
getStringRegExp("abcd", "(a)(b)(c)(d)", 0, 0, 0) = abcd
getStringRegExp("( 2 * 4 = 8 )", "[0-9]", 0, 0, 0) = 2
getStringRegExp("( 2 * 4 = 8 )", "^[0-9]", 0, 0, 0) = No generará ocurrencia pues el primer carácter de la cadena no es un número.

indexOfRegExp

Devuelve la posición de la cadena en la que encontramos la expresión regular a partir de la posición indicada teniendo en cuenta si distinguimos o no entre mayúsculas y minúsculas.
Devolverá -1 si no la encuentra.

Sintaxis

indexOfRegExp(cadena, expresionRegular, posIni, caseSensitive)

Parámetros

cadena
Expresión alfabética de referencia.
expresionReguar
Expresión regular con el texto a encontrar en la cadena.
posIni
Posición inicial de la búsqueda.
caseSensitve
1 distingue mayúsculas y minúsculas, 0 no.

Ejemplo

Validar cadenas numéricas de cuatro dígitos:
indexOfRegExp( trimmedString(DATO) , "\d{4}" , 0 , 0 )

indexOfString

Devuelve la posición del inicio de la subcadena de texto dentro de la cadena o -1 si no la contiene.

Sintaxis

indexOfString(cadena, subcadena, posInicio, caseSensitive)

Parámetros

cadena
Expresión alfabética de referencia.
subcadena
Expresión alfabética a buscar en la cadena.
posInicio
Posición de la cadena a partir de la cual se desea buscar la subcadena. La primera posición es la 0.
caseSensitive
1 distingue mayúsculas y minúsculas, 0 no.

Ejemplo

indexOfString("Velneo 17", "1", 0, 1) = 7

insertString

Inserta la subcadena en la posición deseada de la cadena.

Sintaxis

insertString(cadena, posición, subcadena)

Parámetros

cadena
Expresión alfabética de referencia.
posición
Posición, dentro de la cadena, donde se desea insertar la subcadena. La primera posición es la 0.
subcadena
Expresión alfabética a insertar en la cadena.

Ejemplo

insertString("Velneo es plataforma", 10, "mi ") = Velneo es mi plataforma

isEmpty

Devuelve true (1) si la cadena pasada como parámetro esta vacía.

Sintaxis

isEmpty(parámetro)

Parámetros

parámetro
Cadena a evaluar. Esta cadena puede ser un literal, una variable alfabética, un campo alfabético, el retorno de una función, etc.

Ejemplo

isEmpty("Velneo") = 0
Debemos tener en cuenta que es una función de cadena, es decir, interpreta el parámetro como si se tratase de un texto.
No debemos usar esta función con campos numéricos. En el caso de que queramos realizar la comprobación de si está vació o no el campo numérico, lo correcto es hacer la comprobación haciendo la comprobación con el operador correspondiente.
Ejemplos:
choose(#CAMPO = 0…)
! #CAMPO

left

Extracta caracteres por la izquierda de la cadena. El primer carácter tiene la posición 1.

Sintaxis

left(cadena, longitud)

Parámetros

cadena
Expresión alfabética de referencia.
longitud
Número de caracteres a extraer.

Ejemplo

left("Velneo", 6) = Velneo

leftJustified

Devuelve una cadena, justificada a la izquierda, de la longitud especificada, rellenando por la derecha, si es necesario, con un carácter de relleno.

Sintaxis

leftJustified(cadena, longitud, relleno)

Parámetros

cadena
Expresión alfabética de referencia.
longitud
Longitud total de la cadena a generar.
relleno
Carácter de relleno. Por defecto será un espacio en blanco.
Este comando no cortará la cadena en el caso de que la longitud establecida sea menor que la longitud de la cadena de origen, por lo tanto, debemos asegurarnos de que la cadena de origen no tenga una longitud mayor que la cadena que queremos devolver.

Ejemplo

leftJustified("250 €", 20, "*") = 250 €***************

leftWords

Extrae desde la parte izquierda de la cadena hasta una determinada posición, sin cortar palabras.

Sintaxis

leftWords(cadena, longitud)

Parámetros

cadena
Expresión alfabética de referencia.
longitud
Posición hasta la que se desean extraer palabras.

Ejemplo

leftWords("Esto es una prueba", 10 ) = Esto es

len

Devuelve la longitud de una cadena.

Sintaxis

len(cadena)

Parámetros

cadena
Expresión alfabética de referencia.

Ejemplo

len("ab") = 2

mid

Extrae caracteres de una cadena a partir de una posición determinada.

Sintaxis

mid(cadena, posición, longitud)

Parámetros

cadena
Expresión alfabética de referencia.
posición (opcional)
Posición dentro de la cadena a partir de la cual se desea extraer los caracteres. La primera posición será la 0. Si no se establece ningún valor se asumirá 0 como posición.
Longitud
Longitud total de la cadena a extraer. Si se omite este parámetro, extraerá desde la posición indicada hasta el final de la cadena.

Ejemplos

mid("abcdefg", 2, 2 ) = cd mid("abcdefg", 2) = cdefg mid("abcdefg", 2, 0 ) = ""

removeAccents

Devuelve la cadena pasada como parámetro sin tildes.

Sintaxis

removeAccents(cadena)

Parámetros

cadena
Expresión alfabética de referencia.

Ejemplo

removeAccents("àéô") = aeo

removeCharsAt

Elimina de una cadena un número determinado de caracteres determinados a partir una posición.

Sintaxis

removeCharsAt(cadena, posición, longitud)

Parámetros

cadena
Expresión alfabética de referencia.
posición
Posición a partir de la cual se desea borrar caracteres. La primera posición es 0.
longitud
Número de caracteres a borrar.

Ejemplo

removeCharsAt("velneo 17", 6, 2 ) = velneo7

removeString

Elimina de una cadena todas las ocurrencias de una subcadena.

Sintaxis

removeString(cadena, subcadena)

Parámetros

cadena
Expresión alfabética de referencia.
subcadena
Expresión alfabética a quitar de la cadena. Distingue entre mayúsculas y minúsculas.

Ejemplo

removeString("Aa", "A" ) = a

replaceString

Sustituye, dentro de una cadena, todas las ocurrencias de una subcadena por otra subcadena.

Sintaxis

replaceString(cadena, subcadenaPre, subcadenaPost)

Parámetros

cadena
Expresión alfabética de referencia.
subcadenaPre
Expresión alfabética a buscar en la cadena.
subcadenaPost
Expresión alfabética a sustituir en la cadena por los caracteres de la subcadenaPre. Distingue entre mayúsculas y minúsculas.

Ejemplo

replaceString("velneo", "v", "V" ) = Velneo

reverseString

Devuelve invertida la cadena pasada como parámetro.

Sintaxis

reversetString(cadena)

Parámetros

cadena
Expresión alfabética de referencia.

Ejemplo

reverseString("abc") = cba
Extracta caracteres por la parte derecha de la cadena. El primer carácter tiene la posición 1.

Sintaxis

right(cadena, longitud)

Parámetros

cadena
Expresión alfabética de referencia.
longitud
Número de caracteres a extraer.

Ejemplo

right("abc", 1) = c

rightJustified

Devuelve una cadena, justificada a la derecha, de la longitud especificada, rellenando por la izquierda, si es necesario, con un carácter de relleno.

Sintaxis

rightJustified(cadena, longitud, relleno)

Parámetros

cadena
Expresión alfabética de referencia.
longitud
Longitud total de la cadena a generar.
relleno
Carácter de relleno. Por defecto será un espacio en blanco.
Este comando no cortará la cadena en el caso de que la longitud establecida sea menor que la longitud de la cadena de origen, por lo tanto, debemos asegurarnos de que la cadena de origen no tenga una longitud mayor que la cadena que queremos devolver.

Ejemplo

rightJustified("250 €", 10, "0") = 00000250 €

rightWords

Extrae desde una determinada posición hasta la parte derecha de la cadena, sin cortar palabras.

Sintaxis

rightWords(cadena, longitud)

Parámetros

cadena
Expresión alfabética de referencia.
longitud
Posición a partir de la cual desean extraer palabras.

Ejemplo

rightWords("Esto es una prueba", 11 ) = prueba

stringCompress

Devuelve en base64 y comprimida la cadena que pasamos como parámetro.
Esta función es útil cuando queremos enviar información entre instancias o servidores y tenemos una cadena de texto muy grande; antes de enviar podremos comprimirla con esta función y después de recibir en destino podemos descomprimirla con la función stringUncompress para procesarla.

Sintaxis

stringCompress(cadena, [nivel])

Parámetros

cadena
Cadena de texto a comprimir.
Nivel (opcional)
Podemos especificar un valor comprendido entre 0 y 9 siendo 9 la mayor compresión, es decir menor tamaño pero mayor tiempo de ejecución.
Si no es especifica, por defecto asume el valor -1 que equivale a la compresión por defecto de la librería zlib.
Aclarar que no funciona con ficheros externos comprimir con gzip o similares.

Ejemplo

stringCompress("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ac velit vehicula, pellentesque ipsum at, malesuada erat. Curabitur dignissim felis non quam rutrum auctor. Fusce venenatis pharetra rutrum. Proin turpis sapien, accumsan sed tortor a, consequat pretium mauris. Cras at ex eleifend, vulputate nulla et, aliquam nisi. In hac habitasse platea dictumst. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In hac habitasse platea dictumst. Sed eu nunc convallis lectus auctor ultricies a eget lorem. Aenean magna dui, consequat eget posuere quis, maximus vel sem.
Cras sodales diam eget efficitur varius. Donec eu molestie metus. Nunc viverra, massa aliquet pellentesque aliquam, lorem augue laoreet sapien, in condimentum magna velit vitae velit. Nulla porttitor lacus nec tempor dignissim. Fusce sagittis, est ut fringilla consectetur, elit lacus tincidunt nunc, nec fringilla enim nisl vulputate orci. Integer volutpat nunc sit amet massa efficitur commodo. Pellentesque imperdiet est nisi. Donec pulvinar tellus et felis iaculis iaculis. Fusce porttitor turpis non massa consectetur varius. Aliquam erat volutpat. Ut sollicitudin non velit quis aliquet. Sed blandit libero ac molestie porta. In sodales commodo velit, a semper sapien semper vitae. Sed id est aliquam, tempor neque in, porttitor magna.")
Resultado:
AAAFTHjajVRZihsxEP2fU9QBmr7DkBAIJCEQcoCyumwXaItUMnP8vFK3l/wFBs9YU/30tupvpUkirX0k2kosjboacRJbKJTcJZjYaMSbVu1B84Ukqq30nUfTThzo5gf4vGoYkReqEqNkk/5nyIHMQEscpQ/emKQxAD6Nxid17E0vWXvXRGdAdcol05/Bidqw5k+PYKWt9GX0ILgoS2bDXL1yE2t8zK30sxXNBEhQpc5VJS9gGEbqnKnLRsDBD/EhDrcYVYAorklTEYg1hi4j+YBU0bPkbaHbiHUYm1AeMUIDFHHUSRPkdaWvma5w4+qiuHehGjHOUBcMBFxxxDlxNbhDxkFNqZegBU7BYIKNBWrwAecwUqU5zXFShicdSpd5pjlItdLpqglWSOn/c/svyJcB+jk46o2jex0R8OiHxTSiNQ0qOCC5iFH0eqz0Ds/hYOJLBuTQV/vmXC19SBPEpt2j/tAEVDQDrqf17W162svmHQAnmDYfk/MZ13kHbtx0QMfnkiU4z1QwaiqEKvo/fjjvm96kuQ0JGnkPwG9/bdyRyrJzh7ILDiPjCybvpUBNoGBz/2xG78KOIsNA2f/2Wz3sitaYhwOcAF1O0STh+Nndez07XxTDcAH0aRidG5ZGHeZln5a5RQecIVDdBhL3cJYJ/3xKss6KxZcOlhZm4wwuwrsSh1XeH3/s7+HR0+JQUipbwZr8s6AJldrUwwDfvcp7CHXEm2ZukBojaGJk308F65ffd+VPl44N9D3eSby+Se5Jvx/b42+Dh4SVfiOkgmo65w0xOcgejHfrHvle51NkZAgb9SSt+Lvo0Ronw3Mt7q075O9gWF5vpm/TXon7t5n+jq7btOTRpyPxLNM2lOgpePZn/QtSbPPr

stringSection

Devuelve una sección de una cadena delimitada por un separador en una posición dada.

Sintaxis

stringSection(cadena, separador, pos, seccionInclSepIni, seccionInclSepFin)

Parámetros

cadena
Expresión alfabética de referencia.
separador
Expresión alfabética correspondiente al carácter que se usa como separador dentro de la cadena de referencia.
pos
Posición del ítem a extraer de la cadena. La primera posición será la 0.
seccionInclSepIni
Este parámetro será resuelto con un 1 si queremos que en la sección extraída se incluya el separador inicial o un 0 en el caso contrario.
seccionInclSepFin
Este parámetro será resuelto con un 1 si queremos que en la sección extraída se incluya el separador final o un 0 en el caso contrario.

Ejemplos

stringSection("uno|dos|3", "|", 1, 0, 0) = dos stringSection("uno|dos|3", "|", 1, 1, 0) = |dos stringSection("uno|dos|3", "|", 1, 0, 1) = dos| stringSection("uno|dos|3", "|", 1, 1, 1) = |dos|

stringTobase64

Devuelve una cadena en base64 a partir de la cadena que se le pase como parámetro. Habitualmente este tipo de información nos vendrá en un objeto JSON, vía xmlHttpRequest, etc.

Sintaxis

stringToBase64(cadena, codec)

Parámetros

cadena
Expresión fórmula que debe contener la cadena que se desea convertir a base 64.
codec
Cadena que contiene el nombre del juego de caracteres ASCII usado en la cadena de origen. Lista de codecs. Este es opcional y si no se especifica, usará UTF8.

Ejemplo

Supongamos que recibimos una cadena en base 64 que se corresponde con una foto y que en un proceso hemos almacenado la cadena base64 en una variable local llamada SZBASE64 y queremos modificar un campo objeto dibujo con su contenido. La instrucción del proceso sería:
Convertir base64 a campo objeto ( stringToBase64(SZBASE64, "ISO 8859-1"), FOTO, )

stringToHex

Devuelve cada carácter de la cadena Latin1 pasada como parámetro en formato hexadecimal. Es decir, toma cada carácter de la cadena de origen y devuelve el código hexadecimal correspondiente.

Sintaxis

stringToHex(cadena)

Parámetros

Cadena
Expresión de tipo fórmula con la cadena Latin1 que se desea convertir en hexadecimal. Podemos usar el asistente para edición de fórmulas para su especificación.

Ejemplo

stringToHex("Hola") = 486F6C61

stringUncompress

Devuelve descomprimida la cadena comprimida en base64 que le pasamos como parámetro y que ha sido obtenida previamente con la función stringCompress.
Esta función es útil cuando queremos enviar información entre instancias o servidores y tenemos una cadena de texto muy grande; antes de enviar podremos comprimirla con con la función stringCompress y después de recibir en destino podemos descomprimirla con esta función para procesarla.
No es funcional con ficheros externos comprimidos con otras herramientas.

Sintaxis

stringCompress(cadenaBase64)

Parámetros

cadena
Cadena de texto a descomprimir. Esta debe haber sido comprimida previamente con la función stringCompress.

Ejemplo

stringUncompress("AAAFTHjajVRZihsxEP2fU9QBmr7DkBAIJCEQcoCyumwXaItUMnP8vFK3l/wFBs9YU/30tupvpUkirX0k2kosjboacRJbKJTcJZjYaMSbVu1B84Ukqq30nUfTThzo5gf4vGoYkReqEqNkk/5nyIHMQEscpQ/emKQxAD6Nxid17E0vWXvXRGdAdcol05/Bidqw5k+PYKWt9GX0ILgoS2bDXL1yE2t8zK30sxXNBEhQpc5VJS9gGEbqnKnLRsDBD/EhDrcYVYAorklTEYg1hi4j+YBU0bPkbaHbiHUYm1AeMUIDFHHUSRPkdaWvma5w4+qiuHehGjHOUBcMBFxxxDlxNbhDxkFNqZegBU7BYIKNBWrwAecwUqU5zXFShicdSpd5pjlItdLpqglWSOn/c/svyJcB+jk46o2jex0R8OiHxTSiNQ0qOCC5iFH0eqz0Ds/hYOJLBuTQV/vmXC19SBPEpt2j/tAEVDQDrqf17W162svmHQAnmDYfk/MZ13kHbtx0QMfnkiU4z1QwaiqEKvo/fjjvm96kuQ0JGnkPwG9/bdyRyrJzh7ILDiPjCybvpUBNoGBz/2xG78KOIsNA2f/2Wz3sitaYhwOcAF1O0STh+Nndez07XxTDcAH0aRidG5ZGHeZln5a5RQecIVDdBhL3cJYJ/3xKss6KxZcOlhZm4wwuwrsSh1XeH3/s7+HR0+JQUipbwZr8s6AJldrUwwDfvcp7CHXEm2ZukBojaGJk308F65ffd+VPl44N9D3eSby+Se5Jvx/b42+Dh4SVfiOkgmo65w0xOcgejHfrHvle51NkZAgb9SSt+Lvo0Ronw3Mt7q075O9gWF5vpm/TXon7t5n+jq7btOTRpyPxLNM2lOgpePZn/QtSbPPr")
Resultado:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ac velit vehicula, pellentesque ipsum at, malesuada erat. Curabitur dignissim felis non quam rutrum auctor. Fusce venenatis pharetra rutrum. Proin turpis sapien, accumsan sed tortor a, consequat pretium mauris. Cras at ex eleifend, vulputate nulla et, aliquam nisi. In hac habitasse platea dictumst. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In hac habitasse platea dictumst. Sed eu nunc convallis lectus auctor ultricies a eget lorem. Aenean magna dui, consequat eget posuere quis, maximus vel sem.
Cras sodales diam eget efficitur varius. Donec eu molestie metus. Nunc viverra, massa aliquet pellentesque aliquam, lorem augue laoreet sapien, in condimentum magna velit vitae velit. Nulla porttitor lacus nec tempor dignissim. Fusce sagittis, est ut fringilla consectetur, elit lacus tincidunt nunc, nec fringilla enim nisl vulputate orci. Integer volutpat nunc sit amet massa efficitur commodo. Pellentesque imperdiet est nisi. Donec pulvinar tellus et felis iaculis iaculis. Fusce porttitor turpis non massa consectetur varius. Aliquam erat volutpat. Ut sollicitudin non velit quis aliquet. Sed blandit libero ac molestie porta. In sodales commodo velit, a semper sapien semper vitae. Sed id est aliquam, tempor neque in, porttitor magna.

stripHtml

Devuelve una cadena quitándole todas las etiquetas html que tenga. Esta función es útil cuando disponemos de una cadena con código html y deseamos quitar todas las etiquetas html del mismo.

Sintaxis

stripHtml(cadena)

Parámetros

Cadena
Expresión alfabética de referencia.

Ejemplo

stripHtml("<HTML><BODY>Hola</BODY></HTM>" ) = Hola

titleStyle

Convierte el primer carácter de cada palabra de una cadena en mayúscula y el resto en minúscula.

Sintaxis

titleStyle(cadena)

Parámetros

cadena
Expresión alfabética de referencia.

Ejemplo

titleStyle("john doe") = John Doe

toLower

Devuelve una cadena convertida a minúsculas.

Sintaxis

toLower(cadena)

Parámetros

cadena
Expresión alfabética de referencia.

Ejemplo

toLower("ABCdef") = abcdef

toUpper

Devuelve una cadena convertida a mayúsculas.

Sintaxis

toUpper(cadena)

Parámetros

cadena
Expresión alfabética de referencia.

Ejemplo

toUpper("ABCdef") = ABCDEF

trimmedString

Devuelve la cadena omitiendo espacios no significativos al inicio y al final de la misma.

Sintaxis

trimmedString(cadena)

Parámetros

cadena
Expresión alfabética de referencia.

Ejemplo

trimmedString(" abc ") = abc (si los espacios a ambos lados de la cadena)