Re:StringBuilder e Formatter. Formatar string com menos parametros que o necessário [RESOLVIDO]

2 respostas
crpablo

Fala galerinha...

Preciso de um help pra resolver um problema aqui que é o seguinte....

Alguem conhece uma forma "elegante" de resolver esse tipo de situação:

StringBuilder strCompleta = new StringBuilder();

String msg = "Param1:%s Param2:%s Param3:%s";

Formatter formatter = new Formatter(strCompleta);

String dados = "valor1^valor2";

String[] parametros = dados.split("\\^");

formatter.format(msgTraduzida, parametros);

Ou seja, meu formatter vai ter menos parâmetros que o necessário para formatar a string o que gera um java.util.MissingFormatArgumentException: Format specifier 's'.

abraço

2 Respostas

crpablo
crpablo:
Fala galerinha...

Preciso de um help pra resolver um problema aqui que é o seguinte....

Alguem conhece uma forma "elegante" de resolver esse tipo de situação:

StringBuilder strCompleta = new StringBuilder();

String msg = "Param1:%s Param2:%s Param3:%s";

Formatter formatter = new Formatter(strCompleta);

String dados = "valor1^valor2";

String[] parametros = dados.split("\\^");

formatter.format(msgTraduzida, parametros);

Ou seja, meu formatter vai ter menos parâmetros que o necessário para formatar a string o que gera um java.util.MissingFormatArgumentException: Format specifier 's'.

abraço

Também poderia ser desta forma, porém com o mesmo problema:

String msg = "Param1:%s Param2:%s Param3:%s";

String dados = "valor1^valor2";

String[] parametros = dados.split("\\^");

String.format(msg, parametros);
crpablo

Não deve ser a melhor forma, porém, por hora resolvi meu problema.

String dados = "valor1^valor2";
String msg = "Param1:%s Param2:%s Param3:%s";

String[] parametros = dados.split("\\^");
String[] mensagens = msg.split("%s");

String retorno = "";

if (parametros.length < mensagens.length) {
	int indice = 0;
	for (int i = 0; i < parametros.length; i++) {
		retorno += String.format(mensagens[i] + "%s", parametros[i]);
		indice = i;
	}
        
    indice++;
       
	for (int i = indice; i < mensagens.length; i++) {
		retorno += mensagens[i] + "%s";
	}
}

No final adiciono no retorno a string "%s" por que vou precisar dela mais tarde.

Criado 23 de janeiro de 2012
Ultima resposta 23 de jan. de 2012
Respostas 2
Participantes 1