Metodo format da classe String

olá
pesquisei sobre esse assunto achei alguns topícos mas nao havia a resposta da duvida que tenho
se puderem me ajudar agradeço

gostaria de ver um exemplo simples de como se usa esse metodo eu li o javadoc mas nao entendi muito bem…

um exemplo simples poderia ser:

[code]public class Formatar {
public static void main(String[] args) {

	String cpf = "88888888888";
	
	String bloco1 = cpf.substring(0, 3);
	String bloco2 = cpf.substring(3, 6);
	String bloco3 = cpf.substring(6, 9);
	String bloco4 = cpf.substring(9, 11);
	
	cpf = bloco1+"."+bloco2+"."+bloco3+"-"+bloco4;
	
	System.out.println(cpf);		
}

}[/code]

dessa forma acima funciona porem não é necessario isso, pois o cpf ja é uma string entao pode ser assim:

[code]public class Formatar {
public static void main(String[] args) {

	String cpf = "888.888.888-88";		
	System.out.println(cpf);		
}

}[/code]

nem o tipo long nao armazena essa quantidade de numeros, entao só uma string msm…
porem qria saber como que se faz o formato da string pelo metodo String.format(…);

tentei mas nao entendi olha como fico:

[code]public class Formatar {
public static void main(String[] args) {

	String cpf = "88888888888";
	cpf = String.format("xxx.xxx.xxx-xx", cpf);
	
	System.out.println(cpf);
	
}

}[/code]

só que na saida desse exemplo ele imprime “xxx.xxx.xxx-xx” qria saber como faz para imprimir o numero do cpf formatado por esse metodo sem precisar criar as outras strings que chamei de bloco…

flwz…

usa a lib da caelum
http://stella.caelum.com.br/index.html

para fazer isso na mao vc vai ter que aplicar um Pattern para separar de depois usar o Formatter para juntar do jeito que quer…

a lib ja faz isso

phanpy,

O caminho que o nextuser passou é extremamente válido, pois assim não precisa ficar reinventando a roda visto que já tem tudo implementado, porém é importante ter a curiosidade de baixar o fonte e verificar como a pessoa está fazendo, assim você consegue também utilizar o mesmo conceito em outros problemas não resolvidos pela biblioteca.

Segue abaixo como fazer uma formatação de cpf usando o Matcher e Pattern.

public static String formatCPF(String cpf) { Pattern pattern = Pattern.compile("(\d{3})(\d{3})(\d{3})(\d{2})"); Matcher matcher = pattern.matcher(cpf); if (matcher.matches()) cpf = matcher.replaceAll("$1.$2.$3-$4"); return cpf; }OBS: Está maneira é bem proxima do que é usado pela “stela.caelum”, claro que lá está mais organizado em classes e métodos.

Utilizar o String.format neste caso não é uma boa, pois você teria que ter de alguma forma o CPF já “dividido”
Neste seu caso, você já tem o bloco1, bloco2, etc, então é facil aplicar o String.format

[code]// Troque isto
cpf = bloco1+"."+bloco2+"."+bloco3+"-"+bloco4;

// Por isto
cpf = String.format("%s.%s.%s-%s", bloco1, bloco2, bloco3, bloco4);
[/code]
Att