Fazer com expressão regular

4 respostas
xandevieira

Bom dia, gostaria de saber se tem como fazer.
Terei frases do tipo:
PAGTO, <nucheque>, <tpdoc>, <nudoc>, <nmBanco>, <decompl>
ADIANTAMENTO A <nmcliente>, <cdempr>,<nmempr>, <nudoc>, <tpdoc>
DESCONTO, <nudoc>, <tpDoc>, <nmcliente>, <cdEmpr>, <nmEmpr>

Onde eu troco por replace o que estiver entre <> por outras informações. Estas frases estão salvas no banco de dados. Tem como pegar somente o conteudo dos <> e colocar o toLowerCase() usando o expressão regular?

4 Respostas

E

Ter tem, mas no seu caso seria mais eficiente usar o Velocity ( http://velocity.apache.org/ ) ou alguma outra solução de macros, não?

De qualquer jeito, a expressão regular referente a uma sequência de letras cercada por “<” e “>” é:

“<[A-Za-z0-9_-]+>”

xandevieira

o que eu queria era pegar estas frases e simplesmente colocar toLowerCase() direto, sem ter q montar outra String.

E
Map<String, String> valores = new HashMap <String, String>();
valores.put ("<nucheque>", "123456789");
valores.put ("<tpdoc>", "Q");
valores.put ("<nudoc>", "987654321");
valores.put ("<nmBanco>", "110-3");
valores.put ("<decompl>", "Blas Kubas");
Pattern pat = Pattern.compile ("(<[a-zA-Z0-9]+>)");
String s = "PAGTO, <nucheque>, <tpdoc>, <nudoc>, <nmBanco>, <decompl>";
Matcher mat = pat.matcher (s);
StringBuffer sb = new StringBuffer();
while (mat.find()) {
    
    String replacement = valores.get ( mat.group (1) );
    mat.appendReplacement (sb, replacement);
}
mat.appendTail (sb);
String resultado = sb.toString();
xandevieira

resolvido desta forma:

String texto = "DESCONTO, documento <tpDOc>/<nudoc>, cliente <NMCLIENTE>, empreendimento <cdEmpr> - <nmEmpr> lançado";
        Pattern pat = Pattern.compile("<[A-Za-z0-9_-]+>");
		Matcher mat = pat.matcher(texto);
		List<String> macros = new ArrayList<String>();
		while (mat.find()) {
			macros.add(mat.group());
}
		for(String macro : macros) {
			texto = texto.replaceAll(macro, macro.toLowerCase());
		}
		System.out.println(texto);

DESCONTO, documento <tpdoc>/<nudoc>, cliente <nmcliente>, empreendimento <cdempr> - <nmempr> lançado

vlw

Criado 9 de novembro de 2009
Ultima resposta 9 de nov. de 2009
Respostas 4
Participantes 2