Für welche Funktion kann ich in Android die Nummer in verschiedenen Formaten anzeigen.
Zum Beispiel: Wenn ich 1000 eingebe, sollte es wie diese 1000 angezeigt werden. Wenn ich 10000 eingebe, sollte es wie diese 10.000 angezeigt werden. Wenn ich 1000000 eingebe, sollte dies wie folgt angezeigt werden: 1.000.000.
Bitte führen Sie mich.
String.format("%,d", number)
kurze und korrekte verwenden könnenVersuchen Sie dieses eine Hoffnung, es wird helfen.
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(1000));
quelle
get...Instance()
Methoden standardmäßig das Standardgebietsschema.private String getFormatedAmount(int amount){ return NumberFormat.getNumberInstance(Locale.US).format(amount); }
quelle
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)); }
AUSGABE
1 10 100 10,000 100,000 1,000,000 10,000,000 100,000,000 1,000,000,000
quelle
Fügen Sie diese Funktion in der allgemeinen Klasse hinzu
public static String getFormatedNumber(String number){ if(!number.isEmpty()) { double val = Double.parseDouble(number); return NumberFormat.getNumberInstance(Locale.US).format(val); }else{ return "0"; } }
Und nutzen Sie diese Funktion überall so:
String newNumber = Utils.getFormatedNumber("10000000");
quelle
Fügen Sie wie folgt einen Listener für Textänderungen hinzu (Stellen Sie außerdem sicher, dass der für Edittext ausgewählte Eingabetyp "Nummer" ist):
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 } });
quelle
Sie können das Zahlenformat verwenden
public static double getNumberByString(String s) throws ParseException { return NumberFormat.getInstance(Locale.getDefault()).parse(s).doubleValue(); }
quelle
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)); }
quelle