Hehehe...
acho q expliquei mal, msm...
Mas consegui resolver.
Ficou assim:
Só fiz uma mudanca na segunda linha de replace, adicionando mais parametros.
Pq eu tinha colocado 2 como exemplo, pq a despesa tem 11 (!) parametros.
Ai ficou assim:
*
String expressao = "((ValorReceitaPrevista(%98598) +
ValorReceitaInicial(%9859%)) - (ValorDespesaPrevista(878%)) / 12) *
(ValorComponente(777) / ValorDespesa(1,2,3,4,5,6,7,8,9,10,11))";
expressao = expressao
*
*
.replaceAll(
**
"(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)",
**
"(\"$1\",\"$3\",\"$5\",\"$7\",\"$9\",\"$11\",\"$13\",\"$15\",\"$17\",\"$19\",\"$21\")")
**
expressao = expressao.replaceAll("(\\(\\d+\\))", "\\(\"$1\"\\)")
**
expressao = expressao.replaceAll("(\\(\\%\\d+\\))", "\\(\"$1\"\\)")
**
expressao = expressao.replaceAll("(\\(\\%\\d+\\%\\))",
"\\(\"$1\"\\)")
**
expressao = expressao.replaceAll("(\\(\\d+\\%\\))", "\\(\"$1\"\\)")
**
expressao = expressao.replaceAll("\\%\"", "\"\\%")
**
expressao = expressao.replaceAll("\"\\(", "\"")
**
expressao = expressao.replaceAll("\\)\"", "\"");
*
String expressao = "((ValorReceitaPrevista(%98598) +
ValorReceitaInicial(%9859%)) - (ValorDespesaPrevista(878%)) / 12) *
(ValorComponente(777) / ValorDespesa(1,2,3,4,5,6,7,8,9,10,11))"; expressao =
expressao .replaceAll(
"(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)(\\,)(\\d+)",
"(\"$1\",\"$3\",\"$5\",\"$7\",\"$9\",\"$11\",\"$13\",\"$15\",\"$17\",\"$19\",\"$21\")");
expressao = expressao.replaceAll("(\\(\\d+\\))", "\\(\"$1\"\\)"); expressao
= expressao.replaceAll("(\\(\\%\\d+\\))", "\\(\"$1\"\\)"); expressao =
expressao.replaceAll("(\\(\\%\\d+\\%\\))", "\\(\"$1\"\\)"); expressao =
expressao.replaceAll("(\\(\\d+\\%\\))", "\\(\"$1\"\\)"); expressao =
expressao.replaceAll("\\%\"", "\"\\%"); expressao =
expressao.replaceAll("\"\\(", "\""); expressao =
expressao.replaceAll("\\)\"", "\"");
O resultado foi:
*
<http://www.pdcase.com:8096/forum/posts/list/0/280.page#>
((ValorReceitaPrevista("%98598") + ValorReceitaInicial("%9859%")) -
(ValorDespesaPrevista("878%")) / 12) * (ValorComponente("777") /
ValorDespesa(("1","2","3","4","5","6","7","8","9","10","11")))
((ValorReceitaPrevista("%98598") + ValorReceitaInicial("%9859%")) -
(ValorDespesaPrevista("878%")) / 12) * (ValorComponente("777") /
ValorDespesa(("1","2","3","4","5","6","7","8","9","10","11"))) *
Vlw msm!!!
--
Att,
Luiz Henrique Santana
Analista de Sistemas
# msn => luizhenriquesantana@msn.com
# jabber/gtalk => luizhenriquesantana@gmail.com
# skype => rikg12
# twitter => www.twitter.com/luiz_h_santana
# blog => aqueleolhar.wordpress.com
::31 9151-5816::
*P** **Antes de imprimir** pense em seu compromisso com o Meio Ambiente.*
2011/5/17 Claudio Emanuel Weiler <cweiler@tre-pr.gov.br>
>
>
> Luiz,
>
> Rapaiz, intendi lhufas... :)
>
> Dá uma olhada no método String.format(), vai ser bem mais fácil.
>
> Ex. retornoFormatado = String.format("((v1(%d) + v2(%d))", int1, int2);
>
> Falouzs!!
>
>
> -----Mensagem original-----
> De: java-br@yahoogrupos.com.br [mailto:java-br@yahoogrupos.com.br] Em nome
> de Luiz Henrique Santana
> Enviada em: terça-feira, 17 de maio de 2011 13:30
> Para: java-br@yahoogrupos.com.br
> Assunto: [java-br] Expressoes Regulares
>
>
> Ola, Sres... bom dia!
>
> Tenho uma string informada pelo usuario que contem parametros. Preciso
> transformar esses parametros em string e faço isso colocando "" (aspas) pq
> esses parametros podem conter % (percent).
>
> Assim sendo, fiz aki meus replace e ta funcionando perfeitamente.:
>
> * expressao = "((ValorReceitaPrevista(%98598) +
> ValorReceitaInicial(%9859%)) - (ValorDespesaPrevista(878%)) / 12) *
> ValorComponente(777)";
> expressao = expressao.replaceAll("(\\(\\d+\\))", "\\(\"$1\"\\)");
> expressao = expressao.replaceAll("(\\(\\%\\d+\\))", "\\(\"$1\"\\)");
> expressao = expressao.replaceAll("(\\(\\%\\d+\\%\\))",
> "\\(\"$1\"\\)");
> expressao = expressao.replaceAll("(\\(\\d+\\%\\))", "\\(\"$1\"\\)");
> expressao = expressao.replaceAll("\\%\"", "\"\\%");
> expressao = expressao.replaceAll("\"\\(", "\"");
> expressao = expressao.replaceAll("\\)\"", "\"");*
>
> Só que algumas dessas funcoes da primeira linha podem conter parametros
> compostos separados por virgula, como abaixo:
>
> * expressao = "((ValorReceitaPrevista(%98598) +
> ValorReceitaInicial(%9859%)) - (ValorDespesaPrevista(878%)) / 12) *
> (ValorComponente(777) / ValorDespesa(89,78))";
> *
> Ai nesse caso falta um replace, neh... pra tratar dessa virgula.
>
> Se alguem puder ajudar... desde ja agradeco.
>
> Abs!
>
> --
> Att,
>
> Luiz Henrique Santana
> Analista de Sistemas
> # msn => luizhenriquesantana@msn.com
> # jabber/gtalk => luizhenriquesantana@gmail.com
> # skype => rikg12
> # twitter => www.twitter.com/luiz_h_santana
> # blog => aqueleolhar.wordpress.com
> ::31 9151-5816::
>
> *P** **Antes de imprimir** pense em seu compromisso com o Meio Ambiente.*
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> ------------------------------------
>
> Para sair da lista, envie email para: java-br-unsubscribe@yahoogroups.com
> Para upload/download de arquivos:
> http://www.yahoogroups.com/files/java-brLinks do Yahoo! Grupos
>
> --------
> A Visão do TRE-PR é ser reconhecido como instituição pública de excelência,
> indispensável para o aperfeiçoamento da democracia.
> Todos os eleitores de Curitiba deverão fazer seu recadastramento
> biométrico. Maiores informações em nosso site: www.tre-pr.jus.br
>
>
[As partes desta mensagem que não continham texto foram removidas]
------------------------------------
Para sair da lista, envie email para: java-br-unsubscribe@yahoogroups.com
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-brLinks do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/java-br/
<*> Para sair deste grupo, envie um e-mail para:
java-br-unsubscribe@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html
0 comentários:
Postar um comentário