【发布时间】:2015-03-03 09:24:30
【问题描述】:
我有一个 EditText,我设置了一个输入过滤器,只允许抱怨这个正则表达式的数字:
^\\d{1,8}(\\.\\d{0,2})?$
即8个整数和2个小数位。
请注意,“0”。 (1 位数字后跟一个句点)是允许的。
在edittext焦点丢失时,我想阅读edittext中的文本并将其格式化以显示分组的数字并删除非有效数字。比如一些场景:
1) 如果用户输入 1000。(句号在末尾,后面不跟数字),我想在 edittext 中显示 1,000 2) 如果用户输入 000012. 或 000012 或 000012.0 或 000012.00 我想显示 12 3) 如果用户输入 1230.90 我想显示 1,230.9
所以我在下面执行,假设文本是要格式化的数字:
// Prepare format to apply
DecimalFormat format = new DecimalFormat();
format.setGroupingUsed(true);
format.setMaximumIntegerDigits(8);
format.setMaximumFractionDigits(2);
// Formats the number
String formattedText = format.format(text);
我知道我能做到:
DecimalFormat format = new DecimalFormat("########.##");
所以当应用格式时:
String formattedText = format.format(text);
它崩溃了。
例如,我尝试格式化 0. 和 0.5 数字,但没有成功。
如何摆脱这个?
【问题讨论】:
-
你能发布异常吗?你的名字'text'很奇怪...... format() 需要一个数字。
-
是的,这就是问题所在。格式需要一个数字而不是字符串...
标签: java android number-formatting decimalformat