Jak zostawiłeś pad int
z zerami podczas konwersji na String
java?
Zasadniczo chcę wypisać liczby całkowite 9999
z wiodącymi zerami (np. 1 = 0001
).
java
formatting
zero-pad
Omar Kooheji
źródło
źródło
new String(Integer.toString(num + 10000)).substring(1)
podejściem, jeślinum
jest większy niż 9999, ijs.Odpowiedzi:
Użyj w
java.lang.String.format(String,Object...)
ten sposób:dla zerami o długości 5. Na wyjściu szesnastkowym wymienić
d
ze związkiemx
według"%05x"
.Pełne opcje formatowania są dokumentowane jako część
java.util.Formatter
.źródło
String.format
będą podobne do printf () w C?%012d
%d can't format java.lang.String arguments
Powiedzmy, że chcesz wydrukować
11
jako011
Można użyć formatowania :
"%03d"
.Możesz użyć tego formatyzatora w następujący sposób:
Alternatywnie, niektóre metody Java bezpośrednio obsługują następujące formaterery:
źródło
F
format () powinny byćf
:String.format(...);
.int prefixLength = requiredTotalLength - String.valueOf(numericValue).length
), A następnie używam metody powtarzania łańcucha, aby utworzyć wymagany przedrostek. Istnieją różne sposoby powtarzania ciągów, ale nie ma natywnego języka Java, afaik: stackoverflow.com/questions/1235179/…Jeśli z jakiegokolwiek powodu korzystasz z Javy w wersji wcześniejszej niż 1.5, możesz wypróbować metodę Apache Commons Lang
źródło
Znaleziono ten przykład ... Testuje ...
Testowałem to i:
Oba działają, dla moich celów Myślę, że String.Format jest lepszy i bardziej zwięzły.
źródło
Jeśli wydajność jest ważna w twoim przypadku, możesz to zrobić samemu z mniejszym narzutem w porównaniu do
String.format
funkcji:Wydajność
Wynik
Własna funkcja: 1697ms
String.format: 38134ms
źródło
for( int i : data ) strData += (i > 9 ? (i > 99 ? "" : "0") : "00") + Integer.toString( i ) + "|";
działało to bardzo szybko (przepraszam, że tego nie czas!).Możesz użyć Google Guava :
Maven:
Przykładowy kod:
Uwaga:
Guava
Biblioteka jest bardzo przydatna, ale także zawiera wiele funkcji, które związaneCollections
,Caches
,Functional idioms
,Concurrency
,Strings
,Primitives
,Ranges
,IO
,Hashing
,EventBus
, etcRef: Guava Wyjaśnione
źródło
Spróbuj tego:
źródło
Chociaż wiele z powyższych podejść jest dobrych, ale czasami musimy sformatować liczby całkowite oraz zmiennoprzecinkowe. Możemy tego użyć, szczególnie gdy potrzebujemy wstawić określoną liczbę zer po lewej i po prawej stronie liczb dziesiętnych.
źródło
jeśli chcesz wydrukować sformatowany tekst bezpośrednio na ekranie.
źródło
String.format
iSystem.out.format
wywołać tę samąjava.util.Formatter
implementację.Użyj klasy DecimalFormat, na przykład:
WYDAJNOŚĆ: 0000811
źródło
Oto jak możesz sformatować swój ciąg bez użycia
DecimalFormat
.String.format("%02d", 9)
String.format("%03d", 19)
String.format("%04d", 119)
źródło
Sprawdź mój kod, który będzie działał dla liczb całkowitych i ciągów.
Załóżmy, że naszym pierwszym numerem jest 2. I chcemy do tego dodać zera, aby długość końcowego łańcucha wynosiła 4. W tym celu możesz użyć następującego kodu
źródło
(new char[diff])
dlaczegoreplace("\0", "0")
co jest ... coMusisz użyć formatera, następujący kod używa NumberFormat
źródło
Jedynym problemem związanym z tym podejściem jest to, że wkładasz myślący kapelusz, aby dowiedzieć się, jak to działa.
źródło
number
lubwidth
większym niż 18.Żadne pakiety nie są potrzebne:
Spowoduje to dodanie ciągu do trzech znaków i łatwe dodanie części dla czterech lub pięciu. Wiem, że to nie jest idealne rozwiązanie w żaden sposób (zwłaszcza jeśli chcesz duży wyściełany sznurek), ale mi się podoba.
źródło