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.
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;
}
}