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!





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...