miércoles, 7 de junio de 2023

Funciones para el manejo de cadena de caracteres

En este ejemplo vamos a ver el funcionamiento de algunas funciones de Genexus para el manejo de cadenas de caracteres. Lo que a continuación se detalla como ejemplo puede utilizarse tanto en Web Panel, Procedure, etc.

Supongamos que queremos extraer de una cadena de caracteres; (que puede ser el dato de un campo en una tabla o una línea de texto); una sub cadena pero a partir de una posición especifica. Para ello vamos a necesitar una variable de tipo numérica, la cadena de caracteres y la función "StrSearch()" (http://library.gxtechnical.com/gxdlsp/pub/GeneXus/DevEnv/Docum/ReleaseNotes/7.5/FuncionStrSearch.htm). 

Variables:

&Posicion: Numérico

&Cadena: Alfanumérico (que puede estar basada en el Campos de una Tabla o no)

'(': Es la ocurrencia o caracter a buscar dentro de la variable &Cadena.

Le damos un valor, (constante), a la variable "Cadena" para que se pueda apreciar mejor el ejemplo, podríamos llenarla a partir del valor de un campo o registro de una tabla también, pero para este caso:  

&Cadena = 'Frase a leer (sub cadena)' // 25 caracteres

Entonces vamos a obtener la posición dentro de una cadena o string: 

&Posicion = StrSearch(&Cadena, '(') // retorna un valor numérico

... esto no da como resultado &Posición = 14, que es el valor inicial para leer u obtener una Sub Cadena de la siguiente manera:

Variables:

&LargoCadena: Numérico obtenemos la cantidad de caracteres de la variable "&Cadena"

&LargoSubCadena: Numérico obtenemos la cantidad de caracteres a partir del valor retornado por "&Posicion"

&LargoCadena = &Cadena.Length()

&LargoSubCadena = (&Cadena.Length() - (&Posicion - 1))

...o sea hacemos una pequeña cuenta para obtener en este caso, el largo de la sub cadena quedando con el valor 12.  

Ahora vamos a proceder a definir una variable más donde guardaremos la sub cadena resultante, para ello utilizaremos la Función o Método "Substring()" (https://wiki.genexus.com/commwiki/servlet/wiki?12713,Substring+method); para este ejemplo utilizaremos el Método.

Variable:

&SubCadena: de tipo Alfanumérico del tamaño que definamos nosotros.

&SubCadena =  Trim(&Cadena.Substring(&Posicion, &LargoSubCadena))

El valor entonces de la variable &SubCadena es "(sub cadena)".

Paso a mostrar el Código del ejemplo que lo utilicé en un Web Panel en el "Evento Start"

Quedando de la siguiente manera:

Event Start
    &Cadena = 'Frase a leer (sub cadena)'
    &Posicion = 0
    &LargoCadena = 0
    &LargoSubCadena = 0
    &Posicion = StrSearch(&Cadena, '(')
if &Posicion > 0
&LargoCadena = &Cadena.Length()
&LargoSubCadena = (&LargoCadena - (&Posicion - 1))
&SubCadena =  Trim(&Cadena.Substring(&Posicion, &LargoSubCadena))
endif
Endevent

Espero sirva el ejemplo, de seguro se puede hacer de otra forma, este es mi aporte. cualquier crítica es bien recibida mientras sea constructiva.

Saludos!





No hay comentarios:

Publicar un comentario

Qué es un Queue!? ... en Clarion

Publicado por  EMoreno  el 11/01/2006 - LWP Hola que tal. Una QUEUE es una estructura en memoria. Puede ser de un campo hasta "n...