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

java– 将EditText格式化为整数的货币,第1张

概述所有-我有一个TextWatcher,将EditText格式化为货币格式:privateStringcurrent="";publicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){if(!s.toString().equals(current)){editText$.removeTextChangedListener(this);

所有-
我有一个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格式化为整数的货币所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1116392.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存