IT TIP

Android 편집 필드에 쉼표를 사용하도록 문자열 번호를 포맷하는 방법

itqueen 2020. 11. 25. 21:48
반응형

Android 편집 필드에 쉼표를 사용하도록 문자열 번호를 포맷하는 방법


안드로이드에서 어떤 기능을 사용하여 숫자를 다른 형식으로 표시 할 수 있는지.

예 : 1000을 입력하면 1,000과 같이 표시됩니다. 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

이것은 String.format("%,d", number)@DreaminginCode의 아래 주석에 표시된 것처럼 더 나은 (덜 하드 코딩 된) 솔루션이 될 것이므로 여기에 대안으로 추가 할 것이라고 생각했습니다.


도움이되기를 바랍니다.

 System.out.println(NumberFormat.getNumberInstance(Locale.US).format(1000));

private String getFormatedAmount(int amount){
  return NumberFormat.getNumberInstance(Locale.US).format(amount);
}

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

아래와 같이 텍스트 변경 리스너를 추가합니다 (또한 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 <= 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

        }
    });

Numberformat을 사용할 수 있습니다.

public static double getNumberByString(String s) throws ParseException {
    return NumberFormat.getInstance(Locale.getDefault()).parse(s).doubleValue();
}

공통 클래스에이 함수 추가

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

And use that function every where like this:

String newNumber = Utils.getFormatedNumber("10000000");

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));
}

참고URL : https://stackoverflow.com/questions/19788113/how-can-i-format-a-string-number-to-have-commas-in-android-edit-field

반응형