gpt4 book ai didi

java - 将 EditText 格式化为带整数的货币

转载 作者:太空宇宙 更新时间:2023-11-03 11:44:35 25 4
gpt4 key购买 nike

所有-我有一个 TextWatcherEditText 格式化为货币格式:

private String current = "";
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(!s.toString().equals(current)){
editText$.removeTextChangedListener(this);

String cleanString = s.toString().replaceAll("[$,.]", "");

double parsed = Double.parseDouble(cleanString);
String formated = NumberFormat.getCurrencyInstance().format((parsed/100));

current = formated;
editText$.setText(formated);
editText$.setSelection(formated.length());

editText$.addTextChangedListener(this);
}
}

这很好用,问题是我的 EditText 只需要整数,所以我不允许用户输入美分。所以不是 0.01 比 0.12 比 1.23 比 12.34,我想要 1 比 12 比 123 比 1,234。 如何去掉小数点但保留逗号?谢谢。

最佳答案

如果您不介意删除句点和尾随零,您可以这样做:

    mEditText.addTextChangedListener(new TextWatcher() {
private String current = "";

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (!s.toString().equals(current)) {
annualIncomeEntry.removeTextChangedListener(this);

String cleanString = s.toString().replaceAll("[$,]", "");

if (cleanString.length() > 0) {
double parsed = Double.parseDouble(cleanString);
NumberFormat formatter = NumberFormat.getCurrencyInstance();
formatter.setMaximumFractionDigits(0);
current = formatter.format(parsed);
} else {
current = cleanString;
}


annualIncomeEntry.setText(current);
annualIncomeEntry.setSelection(current.length());
annualIncomeEntry.addTextChangedListener(this);
}
}

@Override
public void afterTextChanged(Editable s) {
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
});

这会将数字格式化程序的最大小数位数设置为零,删除所有尾随零和句点。我还删除了除以 100 的部分,以便所有输入的数字都是整数。

还要确保您的 EditText 的 inputType 是“数字”,否则如果用户尝试输入非数字字符,这将崩溃。

关于java - 将 EditText 格式化为带整数的货币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13484933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com