REPLACE

43 views
Skip to first unread message

Cristian PJ

unread,
Feb 21, 2006, 9:46:34 AM2/21/06
to Progress 4GL - Google
Existe alguma maneira de substituir vários caracteres de uma vez só.
Estou utilizando o REPLACE para a substituição de caracteres, mas me
parece que só é possível uma por vez. Por exemplo: á por a, ã por a, ó
por o, ç por c e assim por diante. Grato.

Jônatas

unread,
Feb 21, 2006, 11:25:21 AM2/21/06
to Progre...@googlegroups.com
Olá Cristian.
 
É somente um por vez mesmo.
 
Abraços
 
Jônatas Gardin

Cristian PJ

unread,
Feb 21, 2006, 1:13:18 PM2/21/06
to Progre...@googlegroups.com
Recorro a vcs novamente: Como faço para substituir vários caracteres com o REPLACE, já que ele permite um por vez?

Jônatas Gardin escreveu:

Rener

unread,
Feb 21, 2006, 1:21:52 PM2/21/06
to Progre...@googlegroups.com
desconheço algum outro comando pra isso...
vários replaces não podem ser?

 
Em 21/02/06, Cristian PJ <crist...@gmail.com> escreveu:

Gerson Jr.

unread,
Feb 21, 2006, 1:35:37 PM2/21/06
to Progre...@googlegroups.com

ve se isto funciona:

MESSAGE replaceAny("abcdeabcdeabcdeabcde","e,a","-,?")
    VIEW-AS ALERT-BOX INFO BUTTONS

/* neste caso a funcão substitui todos os e por - e a por ?

 desta forma você pode alterar quantos quiser mas tem que mandar uma lista separada por virgola... */

function replaceAny return character
    (cTexto as character,
    cSubstituirTexto as character,
    cSubstituirPor   as character):

    define variable iContador as integer no-undo.

    repeat iContador = 1 to num-entries(cSubstituirTexto):
        cTexto = replace(cTexto,entry(iContador,cSubstituirTexto),entry(iContador,cSubstituirPor)).
    end.

    return cTexto.

end function.



 
Em 21/02/06, Rener <rene...@gmail.com> escreveu:

Cristian PJ

unread,
Feb 21, 2006, 1:37:42 PM2/21/06
to Progre...@googlegroups.com
O problema é que não sei aplicar vários replace sem substituir o anterior... Estou vendo uns exemplos, mas achei extremamente deselegante a alternativa encontrada.

Rener escreveu:

Cristian PJ

unread,
Feb 21, 2006, 2:02:16 PM2/21/06
to Progre...@googlegroups.com
Foi bom vc ter enviado este exemplo... Qro aproveitar e perguntar para que, exatamente, serve este NO-UNDO? Já li a explicação em português e em inglês, mas não entendi ainda para que pode ser usado.

Gerson Jr. escreveu:

Gerson Jr.

unread,
Feb 21, 2006, 2:16:20 PM2/21/06
to Progre...@googlegroups.com
você pode fazer diversos tratamentos dentro de uma transação, no caso do tratamento de um erro por exemplo você pode usar UNDO ex:
 
do  transaction on error undo, leave:

    /* código que altera o valor da variavel*/

end.

neste caso, quando ocorrer um erro dentro deste "do" tudo que foi feito dentro dele será desfeito e volta a ter o valor que tinha antes de entrar neste bloco, a menos que as variaveis/temp-tables/etc.. tenham sido definidas com no-undo., neste caso elas mantém o último valor mesmo quando ocorre o erro.

 
Reply all
Reply to author
Forward
0 new messages