Eu preciso produzir uma string de comprimento fixo para gerar um arquivo baseado em posição de caractere. Os caracteres ausentes devem ser preenchidos com caractere de espaço.
Como exemplo, o campo CITY tem um comprimento fixo de 15 caracteres. Para as entradas "Chicago" e "Rio de Janeiro" as saídas são
"Chicago" " Rio de Janeiro".
java
string
formatting
Rafael Borja
fonte
fonte
Respostas:
Desde Java 1.5, podemos usar o método java.lang.String.format (String, Object ...) e usar o formato semelhante ao printf.
A string de formato
"%1$15s"
faz o trabalho. Onde1$
indica o índice do argumento,s
indica que o argumento é uma String e15
representa a largura mínima da String. Juntando tudo:"%1$15s"
.Para um método geral, temos:
Talvez alguém possa sugerir outra string de formato para preencher os espaços vazios com um caractere específico?
fonte
Maybe someone can suggest another format string to fill the empty spaces with an specific character?
- dê uma olhada na resposta que dei.1$
representa o índice do argumento e15
a larguraUtilize
String.format
o preenchimento de com espaços e substitua-os pelo caractere desejado.Impressões
000Apple
.Atualização de versão mais performant (já que não depende de
String.format
), que não tem problema de espaços (obrigado a Rafael Borja pela dica).Impressões
00New York
.Mas uma verificação precisa ser adicionada para evitar a tentativa de criar uma matriz char com comprimento negativo.
fonte
Este código terá exatamente a quantidade de caracteres fornecida; preenchido com espaços ou truncado no lado direito:
fonte
Você também pode escrever um método simples como abaixo
fonte
Para o pad certo você precisa
String.format("%0$-15s", str)
ou seja, o
-
sinal irá para o painel "direito" e nenhum-
sinal irá para o painel "esquerdo"veja meu exemplo aqui
http://pastebin.com/w6Z5QhnJ
a entrada deve ser uma string e um número
exemplo de entrada: Google 1
fonte
Muito melhor do que goiaba. Nunca vi um único projeto Java corporativo que usa Guava, mas Apache String Utils é incrivelmente comum.
fonte
A Biblioteca Guava possui Strings.padStart que faz exatamente o que você deseja, junto com muitos outros utilitários úteis.
fonte
Aqui está um truque legal:
fonte
Aqui está o código com casos de teste;):
Eu gosto de TDD;)
fonte
Ótimo resumo aqui
fonte
Este código funciona muito bem.
Happy Coding !!
fonte
fonte
Esta função simples funciona para mim:
Invocação:
fonte