Как вы оставили pad int
с нулями при преобразовании String
в Java?
Я в основном ищу дополнить целые числа 9999
с ведущими нулями (например, 1 = 0001
).
java
formatting
zero-pad
Омар Кохеджи
источник
источник
new String(Integer.toString(num + 10000)).substring(1)
подходом, еслиnum
он больше 9999, хотя, ijs.Ответы:
Используйте
java.lang.String.format(String,Object...)
как это:для заполнения нулями длины 5. Для шестнадцатеричного вывода замените на
d
«x
как»"%05x"
.Полные параметры форматирования задокументированы как часть
java.util.Formatter
.источник
String.format
будут похожи на printf () в C?%012d
%d can't format java.lang.String arguments
Допустим, вы хотите напечатать
11
как011
Вы можете использовать форматчик :
"%03d"
.Вы можете использовать этот форматер следующим образом:
В качестве альтернативы, некоторые методы Java напрямую поддерживают эти форматеры:
источник
F
формат () должен бытьf
:String.format(...);
.int prefixLength = requiredTotalLength - String.valueOf(numericValue).length
), а затем использую метод повторяющихся строк для создания требуемого префикса. Существуют различные способы повторения строк, но не существует нативного Java, afaik: stackoverflow.com/questions/1235179/…Если по какой-либо причине вы используете Java до версии 1.5, попробуйте использовать метод Apache Commons Lang.
источник
Нашел этот пример ... Буду тестировать ...
Протестировал это и:
Обе работы, для моих целей, я думаю, что String.Format лучше и лаконичнее.
источник
Если производительность важна в вашем случае, вы можете сделать это самостоятельно с меньшими издержками по сравнению с
String.format
функцией:Представление
Результат
Собственная функция: 1697мс
Строка.формат: 38134мс
источник
for( int i : data ) strData += (i > 9 ? (i > 99 ? "" : "0") : "00") + Integer.toString( i ) + "|";
работал очень быстро (извините, я не успел!).Вы можете использовать Google Guava :
Maven:
Образец кода:
Замечания:
Guava
очень полезная библиотека, он также предоставляет множество функций , которые касаютсяCollections
,Caches
,Functional idioms
,Concurrency
,Strings
,Primitives
,Ranges
,IO
,Hashing
,EventBus
и т.д.Ссылка: GuavaExplained
источник
Попробуй это:
источник
Хотя многие из вышеперечисленных подходов хороши, но иногда нам нужно форматировать как целые числа, так и числа с плавающей точкой. Мы можем использовать это, особенно когда нам нужно заполнить определенное количество нулей слева, а также справа от десятичных чисел.
источник
если вы хотите распечатать форматированный текст прямо на экране.
источник
String.format
иSystem.out.format
вызовите ту жеjava.util.Formatter
реализацию.Используйте класс DecimalFormat, вот так:
ВЫХОД: 0000811
источник
Вот как вы можете отформатировать вашу строку без использования
DecimalFormat
.String.format("%02d", 9)
String.format("%03d", 19)
String.format("%04d", 119)
источник
Проверьте мой код, который будет работать для целых чисел и строк.
Предположим, что наше первое число равно 2. И мы хотим добавить к этому нули, чтобы длина конечной строки была 4. Для этого вы можете использовать следующий код
источник
(new char[diff])
почемуreplace("\0", "0")
что ... чтоВам нужно использовать Formatter, следующий код использует NumberFormat
источник
Единственная проблема с этим подходом состоит в том, что он заставляет вас задуматься, чтобы понять, как он работает.
источник
number
илиwidth
больше 18.Пакеты не нужны:
Это добавит строку к трем символам, и будет легко добавить деталь на четыре или пять. Я знаю, что это не идеальное решение в любом случае (особенно, если вы хотите большую мягкую строку), но мне это нравится.
источник