我怎样才能格式化一个string数字在Android编辑字段中有逗号
我可以在android中使用什么函数来将数字显示为不同的格式。
例如:如果我input1000,那么它应该像这样显示1000。 如果我input10000,那么它应该显示像这样的10,000。 如果我input100000,那么它应该显示像这样的1,000,000。
请指导我
您应该使用DecimalFormat
并只格式化数字
DecimalFormat formatter = new DecimalFormat("#,###,###"); String yourFormattedString = formatter.format(100000);
结果将是
-
1,000,000
为1000000 -
10,000
为10000 -
1,000
1000
ECT
试试这个希望它会有所帮助。
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(1000));
private String getFormatedAmount(int amount){ return NumberFormat.getNumberInstance(Locale.US).format(amount); }
添加一个文本更改侦听器如下(同时确保为Edittextselect的inputtypes是Number):
etTest.addTextChangedListener(new TextWatcher() { boolean isManualChange = false; @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (isManualChange) { isManualChange = false; return; } try { String value = s.toString().replace(",", ""); String reverseValue = new StringBuilder(value).reverse() .toString(); StringBuilder finalValue = new StringBuilder(); for (int i = 1; i <= reverseValue.length(); i++) { char val = reverseValue.charAt(i - 1); finalValue.append(val); if (i % 3 == 0 && i != reverseValue.length() && i > 0) { finalValue.append(","); } } isManualChange = true; etTest.setText(finalValue.reverse()); etTest.setSelection(finalValue.length()); } catch (Exception e) { // Do nothing since not a number } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } });
int[] numbersToFormat = new int[] { 1, 10, 100, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 }; for (int number : numbersToFormat) { System.out.println( NumberFormat.getNumberInstance(Locale.getDefault()).format(number)); }
OUTPUT
1 10 100 10,000 100,000 1,000,000 10,000,000 100,000,000 1,000,000,000
您可以使用Numberformat
public static double getNumberByString(String s) throws ParseException { return NumberFormat.getInstance(Locale.getDefault()).parse(s).doubleValue(); }