Вот строка, например:
"Apple"
и я хотел бы добавить ноль, чтобы заполнить 8 символов:
"000Apple"
Как я могу это сделать?
Вот строка, например:
"Apple"
и я хотел бы добавить ноль, чтобы заполнить 8 символов:
"000Apple"
Как я могу это сделать?
Если вам нужно сделать это без помощи библиотеки:
("00000000" + "Apple").substring("Apple".length())
(Работает, пока ваша строка не длиннее 8 символов.)
("0000" + theString).substring(theString.length())
более реалистично Это колодкиtheString
с ведущими нулями. Извините, не удержался от добавления этого комментария :)StringBuilder
, и для его заполнения требуется цикл. Если требование действительно обрезать только 8-символьные строки, это нормально, хотя это очень узкий вариант использования, но это решение никогда нельзя назвать быстрым. Это просто коротко.источник
%07s
вместо%07d
, вы получитеFormatFlagsConversionMismatchException
. можешь попробовать.Это из общего достояния . См Javadoc
источник
Это то, что он действительно просил, я верю:
вывод:
источник
DuplicateFormatFlagsException
(из-00
за строки формата). Если вы подставите строку длиной более 8 символов, будет выброшеноIllegalFormatFlagsException
(из-за отрицательного числа).String.format("%0"+ (9 - "Apple".length() )+"d%s",0 ,"Apple").substring(0,8);
? Теперь у вас не будет этого исключения.String.format("%0"+ (9 - "Apple".length() )+"d%s",0 ,"Apple").substring(0,8);
это НЕПРАВИЛЬНО, так и должно бытьString.format("%0"+ (9 - "Apple".length() )+"d%s",0 ,"Apple").substring(1,9);
.Вы можете использовать метод String.format, как в другом ответе, чтобы сгенерировать строку из 0,
Это может быть применено к вашей проблеме путем динамической регулировки количества ведущих нулей в строке формата:
Это все еще грязное решение, но имеет то преимущество, что вы можете указать общую длину полученной строки, используя целочисленный аргумент.
источник
Используя
Strings
служебный класс Guava :источник
Вы можете использовать это:
источник
Я был в подобной ситуации, и я использовал это; Это довольно кратко, и вам не нужно иметь дело с длиной или другой библиотекой.
Просто и аккуратно. Формат строки возвращается,
" Apple"
поэтому после замены пробела нулями он дает желаемый результат.источник
источник
Используйте Apache Commons StringUtils.leftPad (или посмотрите на код, чтобы создать свою собственную функцию).
источник
источник
Возможно, вам придется позаботиться о edgecase. Это общий метод.
источник
источник
источник
В Java:
В Скала:
В Java 8 вы также можете найти способ сделать это с помощью потоков и сокращения (аналогично тому, как я это делал в Scala). Это немного отличается от всех других решений, и мне это особенно нравится.
источник
Это быстро и работает для любой длины.
источник
Может быть быстрее, чем Крис Лерчер отвечает, когда большинство в String имеют точно 8 символов
в моем случае на моей машине 1/8 быстрее.
источник
Вот простая версия «читаемого сценария» без API, которую я использую для предварительного заполнения строки. (Простой, читаемый и регулируемый).
источник
Кто-нибудь пробовал это чистое Java-решение (без SpringUtils):
К сожалению, это решение работает, только если в строке нет пробелов.
источник
Если вы хотите написать программу на чистом Java, вы можете воспользоваться приведенным ниже методом или использовать множество String Utils, которые помогут вам лучше с расширенными функциями.
Используя простой статический метод, вы можете добиться этого, как показано ниже.
Вы можете использовать вышеуказанный метод
addLeadingText(length, padding text, your text)
Выход будет 000Apple
источник
Это не красиво, но это работает. Если у вас есть доступ к Apache Commons, я бы предложил использовать это
источник