반응형
Android 편집 필드에 쉼표를 사용하도록 문자열 번호를 포맷하는 방법
안드로이드에서 어떤 기능을 사용하여 숫자를 다른 형식으로 표시 할 수 있는지.
예 : 1000을 입력하면 1,000과 같이 표시됩니다. 10000을 입력하면 10,000과 같이 표시됩니다. 1000000을 입력하면 1,000,000과 같이 표시됩니다.
나를 안내 해주세요.
DecimalFormat숫자를 사용 하고 형식을 지정할 수 있습니다.
DecimalFormat formatter = new DecimalFormat("#,###,###");
String yourFormattedString = formatter.format(100000);
결과는
1,000,000100000010,000100001,0001000 년
업데이트 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));
}
반응형
'IT TIP' 카테고리의 다른 글
| EditText에서 키보드 비활성화 (0) | 2020.11.25 |
|---|---|
| 텍스트 입력의 내부 그림자 제거 (0) | 2020.11.25 |
| jquery의 promise 메서드는 실제로 어떻게 작동합니까? (0) | 2020.11.25 |
| 새 탭에서 면도기 작업 링크를 여는 방법은 무엇입니까? (0) | 2020.11.25 |
| CSS를 통해 높이와 너비가 다른 모든 이미지를 동일하게 만들려면 어떻게해야합니까? (0) | 2020.11.25 |