【发布时间】:2013-11-21 12:55:39
【问题描述】:
我正在使用一个类将我的 EditText 的值格式化为货币。这个类使用函数 NumberFormat.getCurrencyInstance().format((parsed/100));格式化。这门课让我的价值有两个小数位(R$2,00)。我希望它有三位小数(2,000 雷亚尔)。它的气体价值。在巴西,我们使用三位小数来表示气体。
这是我正在使用的课程:
public class MascaraMonetaria implements TextWatcher{
final EditText mEditText;
String current;
static Context context;
public MascaraMonetaria(EditText mEditText, String current, Context context) {
super();
this.mEditText = mEditText;
this.current = current;
}
@Override
public void afterTextChanged(Editable arg0) {}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
@Override
public void onTextChanged(CharSequence s, int arg1, int arg2, int arg3) {
if (!s.toString().equals(current)) {
mEditText.removeTextChangedListener(this);
String cleanString = s.toString().replaceAll("[R$,.]", "");
double parsed = Double.parseDouble(cleanString);
String formatted = NumberFormat.getCurrencyInstance().format((parsed/100));
current = formatted;
mEditText.setText(formatted);
mEditText.setSelection(formatted.length());
mEditText.addTextChangedListener(this);
}
}
public static double stringMonetarioToDouble(String str) {
double retorno = 0;
try {
boolean hasMask = ((str.indexOf("R$") > -1 || str.indexOf("$") > -1) && (str
.indexOf(".") > -1 || str.indexOf(",") > -1));
// Verificamos se existe máscara
if (hasMask) {
// Retiramos a mascara.
str = str.replaceAll("[R$]", "").replaceAll("[$]", "").replaceAll("[.]", "").replaceAll("[,]", ".");
}
// Transformamos o número que está escrito no EditText em double.
retorno = Double.parseDouble(str);
} catch (NumberFormatException e) {
}
return retorno;
}
}
【问题讨论】:
标签: java android android-edittext maskedtextbox