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:

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

    ResponderExcluir
  2. 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")


    ;)

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

    ResponderExcluir