Как я могу отформатировать число в строку с запятыми, в поле ввода андроид

Для какой функции я могу использовать в Android для отображения числа в различных форматах.

Например: Если я ввожу 1000, то он должен показать как это 1000. Если я ввести 10000, то он должен показать, как это 10,000. Если я введите 1000000, то он должен показать такой 1,000,000.

Пожалуйста, руководство меня.

Решение

Вы могли бы использовать DecimalFormat и просто формат числа

DecimalFormat formatter = new DecimalFormat("#,###,###");
String yourFormattedString = formatter.format(100000);

Результат будет

  • 1,000,000 за 1000000
  • 10,000 за 10000
  • 1,000 за 1000

Обновление 12/02/2019

Эта Строка.формат(" по%,д-то", количество) было бы лучшим решением(менее жестко), как указано в комментарии ниже по @DreaminginCode поэтому я думал, я хотел бы добавить его в качестве альтернативы

Комментарии (9)

попробовать этот один надеюсь, что это поможет.

 System.out.println(NumberFormat.getNumberInstance(Locale.US).format(1000));
Комментарии (3)
private String getFormatedAmount(int amount){
  return NumberFormat.getNumberInstance(Locale.US).format(amount);
}
Комментарии (0)
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));
}

Выход

1
10
100
10,000
100,000
1,000,000
10,000,000
100,000,000
1,000,000,000
Комментарии (0)

Добавить слушателя изменения текста, как показано ниже (также убедитесь, что тип входного сигнала, который выбран для EditText номер) :

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  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

        }
    });
Комментарии (0)

Вы можете использовать Numberformat

public static double getNumberByString(String s) throws ParseException {
    return NumberFormat.getInstance(Locale.getDefault()).parse(s).doubleValue();
}
Комментарии (0)

Добавить эту функцию в общий класс

  public static String getFormatedNumber(String number){
        if(!number.isEmpty()) {
            double val = Double.parseDouble(number);
            return NumberFormat.getNumberInstance(Locale.US).format(val);
        }else{
            return "0";
        }
    }

И использовать эту функцию везде такой:

String newNumber = Utils.getFormatedNumber("10000000");
Комментарии (0)
public static String formatNumber(int number){
    return NumberFormat.getNumberInstance(Locale.getDefault()).format(number);
}
public static String formatNumber(String number){
    return NumberFormat.getNumberInstance(Locale.getDefault()).format(Integer.parseInt(number));
}
Комментарии (0)