Como você deixou um pad int
com zeros ao converter para um String
em java?
Basicamente, estou procurando preencher números inteiros 9999
com zeros à esquerda (por exemplo, 1 = 0001
).
java
formatting
zero-pad
Omar Kooheji
fonte
fonte
new String(Integer.toString(num + 10000)).substring(1)
abordagem, senum
for maior que 9999, ijs.Respostas:
Use
java.lang.String.format(String,Object...)
assim:para preenchimento zero com um comprimento de 5. Para saída hexadecimal, substitua por
d
com umx
como em"%05x"
.As opções de formatação completas estão documentadas como parte de
java.util.Formatter
.fonte
String.format
sejam semelhantes a printf () em C?%012d
%d can't format java.lang.String arguments
Digamos que você queira imprimir
11
como011
Você poderia usar um formatador :
"%03d"
.Você pode usar este formatador assim:
Como alternativa, alguns métodos java suportam diretamente esses formatadores:
fonte
F
de format () deve serf
:String.format(...);
.int prefixLength = requiredTotalLength - String.valueOf(numericValue).length
) e, em seguida, uso um método de sequência repetida para criar o prefixo necessário. Existem várias maneiras de repetir seqüências de caracteres, mas não há uma nativa em java, como: stackoverflow.com/questions/1235179/…Se, por algum motivo, você usar o Java anterior a 1.5, poderá tentar com o método Apache Commons Lang
fonte
Encontrei este exemplo ... Testará ...
Testou isso e:
Ambos funcionam, para meus propósitos, acho que String.Format é melhor e mais sucinto.
fonte
Se o desempenho for importante no seu caso, você poderá fazê-lo com menos sobrecarga em comparação com a
String.format
função:atuação
Resultado
Função própria: 1697ms
String.format: 38134ms
fonte
for( int i : data ) strData += (i > 9 ? (i > 99 ? "" : "0") : "00") + Integer.toString( i ) + "|";
isso funcionou muito rapidamente (desculpe, não dei tempo!).Você pode usar o Google Guava :
Maven:
Código de amostra:
Nota:
Guava
é uma biblioteca muito útil, ele também oferece muitos recursos que se referem aCollections
,Caches
,Functional idioms
,Concurrency
,Strings
,Primitives
,Ranges
,IO
,Hashing
,EventBus
, etcRef: GuavaExplicado
fonte
Tente este:
fonte
Embora muitas das abordagens acima sejam boas, às vezes precisamos formatar números inteiros e flutuantes. Podemos usar isso, principalmente quando precisamos preencher um número específico de zeros à esquerda e à direita de números decimais.
fonte
se você deseja imprimir o texto formatado diretamente na tela.
fonte
String.format
eSystem.out.format
chame a mesmajava.util.Formatter
implementação.Use a classe DecimalFormat, assim:
OUTPUT: 0000811
fonte
Aqui está como você pode formatar sua string sem usar
DecimalFormat
.String.format("%02d", 9)
String.format("%03d", 19)
String.format("%04d", 119)
fonte
Verifique meu código que funcionará para inteiro e String.
Suponha que nosso primeiro número seja 2. E queremos adicionar zeros a isso, para que o comprimento da string final seja 4. Para isso, você pode usar o seguinte código
fonte
(new char[diff])
por quereplace("\0", "0")
o que é ... o queVocê precisa usar um Formatador, o código a seguir usa NumberFormat
fonte
O único problema com essa abordagem é que ela faz com que você se vista para descobrir como ela funciona.
fonte
number
ouwidth
superior a 18. #Não são necessários pacotes:
Isso irá preencher a seqüência de caracteres com três caracteres, e é fácil adicionar uma parte a mais por quatro ou cinco. Sei que essa não é a solução perfeita de maneira alguma (especialmente se você deseja uma corda grande e acolchoada), mas eu gosto.
fonte