Mascara

Bom dia, tenho códigos que seguem uma determinada mascara. ex. 1.1.02.002

Preciso retirar a mascara 1102002 para poder somar 1 ficando 11102003. Até aqui blz, sei fazer.
Só que depois da soma preciso colocar novamente a mascara 1.1.02.003. Isso não estou conseguindo fazer.

Tentei o seguinte:

    	StringBuffer pkWithMask = new StringBuffer("");
    	String pk = str;
		try {
	    	if (pk != null && pk.indexOf(".") == -1) {
				for(int i = 0; i < pk.length(); i++){
					if (i == 0) {
						pkWithMask.append(pk.charAt(i));
					} else {
						pkWithMask.append("."+pk.charAt(i++));
						pkWithMask.append(pk.charAt(i));
					}
				}
	    	}

Só que ele coloca mascara fixa: 1.10.20.03
O problema é que esta mascara pode variar conforme usuario definir.

Alguém pode me ajudar?

Humm… a sua mascara segue o inicio dos Numeros de Fibonacci

Não sei se vai funcionar para seu caso, mas jah tentou o MaskFormatter?!
http://java.sun.com/docs/books/tutorial/uiswing/components/formattedtextfield.html

dae ratao, infelizmente a MaskFormatter não me resolveu o problema. pq não estou digitando ou editando.

vou tentar resolver de outra forma.

mas vlw

Pesquisando mais a fundo aqui no GUJ, encontrei uma classe feita pelo Marcos Alexandre Miguel que resolveu meu problema.
http://www.guj.com.br/posts/list/32372.java#173451

vlw


public class MaskFormat{

	private static final long serialVersionUID = 1L;

	private String vMask;

	private String vValue;

	private boolean vReturnValueEmpty;

	public static String getValueMaskFormat(String pMask, String pValue,
			boolean pReturnValueEmpty){

		/* 
		 * Verifica se se foi configurado para nao retornar a  
		 * mascara se a string for nulo ou vazia se nao 
		 * retorna somente a mascara. 
		 */ 
		if (pReturnValueEmpty == true
				&& (pValue == null || pValue.trim().equals("")))
			return "";

		/* 
		 * Substituir as mascaras passadas como  9, X, * por # para efetuar a formatcao
		 */
		pMask = pMask.replaceAll("*", "#");
		pMask = pMask.replaceAll("9", "#");
		pMask = pMask.toUpperCase().replaceAll("X", "#");

		/* 
		 * Formata valor com a mascara passada  
		 */
		for(int i = 0; i < pValue.length(); i++){
			pMask = pMask.replaceFirst("#", pValue.substring(i, i + 1));
		}

		/* 
		 * Subistitui por string vazia os digitos restantes da mascara 
		 * quando o valor passado é menor que a mascara   
		 */
		return pMask.replaceAll("#", "");
	}

	public static String getValueMaskFormat(String pMask, String pValue){
		return getValueMaskFormat(pMask, pValue, true);
	}

	public String getMask(){
		return vMask;
	}

	public void setMask(String mask){
		vMask = mask;
	}

	public String getValueMaskFormat(){
		return getValueMaskFormat(getMask(), getValue(), isReturnValueEmpty());
	}

	public String getValue(){
		return vValue;
	}

	public void setValue(String value){
		vValue = value;
	}

	public boolean isReturnValueEmpty(){
		return vReturnValueEmpty;
	}

	public void setReturnValueEmpty(boolean pReturnValueEmpty){
		vReturnValueEmpty = pReturnValueEmpty;
	}
}