
所有-
我有一个TextWatcher,将EditText格式化为货币格式:
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只需要整数,所以我不能让用户输入美分.因此,与12.34相比,我想要的不是0.1比0.12而不是1.23.如何摆脱小数点但保留逗号?谢谢.
解决方法:
如果你不介意删除句点和尾随零,你可以这样做:
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是“number”,否则如果用户尝试输入非数字字符,这将会崩溃.
总结以上是内存溢出为你收集整理的java – 将EditText格式化为整数的货币全部内容,希望文章能够帮你解决java – 将EditText格式化为整数的货币所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)