sexta-feira, 7 de maio de 2010

Kung fu dos textos!

Você deve estar imaginando que raio de titulo é esse! Isso porque você não deve ter muita intimidade com o SplitRegEx, caso contrário o acharia até normal. Diante desse faixa preta, não existe oponente, ele quebra mesmo!

O SplitRegEx é uma função que opera sob a forma de expressão regular que tem por finalidade quebrar um texto do tipo CHARACTER, ele não aceita varchar ou longvarchar, em partes que  normalmente armazenadas em uma Collection. A regra para a quebra é definida por uma expressão que pode ser um ou mais caracteres que simbolizam a separação entre as partes de texto.

Por exemplo, arquivos CSV, separa as partes de um texto por meio de ponto-e-virgula ou qualquer outro caracter. Desta forma a frase a seguir tem um significado de um conjunto de informações separadas pelo mesmo texto.

10;Jose da Silva; Av.Central,10;Santana do Parnaiba;São Paulo

Desta forma essa função é muito útil na sua luta diária com Genexus. E para definir o tatame voce pode criar um WebPanel. E na área de Events programe:

Event Start
     &texto  = "10;Jose da Silva; Av.Central,10;Santana do Parnaiba;São Paulo"
     &itens   =  &teste.SplitRegEx(';')
     for &item in &itens   
             msg(&item)
     endfor
EndEvent

As variáveis podem ser definidas como:

&item  = Character(100)
&itens  = Character(100) - Collection
&texto = Character(200)

O resultado é a quebra do texto nas partes indicadas por ; e a apresentação de cada parte individualmente como uma mensagem.

Observe que em &itens voce terá uma série de informações, tais como o numero de itens, o item corrente navegado, entre outros.

Boa luta!

3 comentários:

Jan Marcelo disse...

Add janmarcelo@rpsavi.com.br pra trocarmos figurinhas, sou desenvolvedor GeneXus á 3 anos, e 1 ano e meio com a GeneXus X... abraços, fique com DEUS!

APBM/RR - Presidente disse...

Hummm..Legal... Estava lendo um material em Java sobre o método split(). Ele tokeniza os dados a partir de um Pattern, neste caso posso usar expressões regulares com metacaracteres e ainda quantificadores tipo:

"\\d" --> somente dígitos
"\\s" --> espaços em branco
"\\w" --> Caracteres alfanuméricos e hífen
etc...
Quantificadores
* --> 0 e mais ocorrências
+ --> 1 e mais ocorrências
? --> 0 ou 1 ocorrência

Exemplo:

String Texto = "abc1abc1abc1abc"
--> uma forma
texto.split("1")
--> outra forma
texto.split("\\d")


;)

Douglas Hamilton de Oliveira disse...

Caro Presidente,
Gostei do seu comentário, essa coisa de expressão regular é de outro mundo, e este contribuiu muito na questão.
ab e obrigado