A saída é:
Há laranja, banana, pêra e limão.Existem cinco argumentos neste método estático de formato () da classe String. O primeiro argumento é a principal série de interesse, cujo conteúdo tem quatro espaços reservados, cada um dos quais é %s. Juntos, o restante dos argumentos é referido como uma lista de argumentos. Tudo sendo igual, o primeiro argumento na lista de argumentos corresponde ao primeiro espaço reservado na sequência principal (da esquerda). O segundo argumento na lista corresponde ao segundo espaço reservado na sequência principal. O terceiro argumento na lista de argumentos corresponde ao terceiro espaço reservado na sequência principal e assim por diante. Na saída, os espaços reservados são substituídos por seus argumentos correspondentes de maneira predeterminada a partir da lista de argumentos.
Cinco argumentos são considerados aqui. O primeiro não faz parte da lista de argumentos considerados. Na verdade é chamado de sequência de formato, embora ainda seja formatada. É sempre uma corda. O restante dos argumentos, formando a lista de argumentos, pode ser de diferentes tipos, não necessariamente, strings. Nota: Um espaço reservado aqui é chamado de especificador de formato.
Todos os argumentos acima, podem ser substituídos por variáveis, como mostra o seguinte segmento de código:
String a = "laranja", b = "banana", c = "pêra", d = "limão";Este artigo explica o básico da formatação de uma string em Java usando especificadores de formato.
Sintaxe do especificador de formato
A sintaxe para o especificador de formato é:
%[argument_index $] [sinalizadores] [largura] [.Precisão] ConversãoDeve começar com o sinal percentual, %. Deve terminar com um personagem chamado conversão. No código acima, cada especificador consiste em % e 's'. 'S' é a conversão. 'S' significa String. O restante dos parâmetros, indicado entre colchetes na sintaxe, são opcionais e são explicados abaixo.
argument_index $
argument_index é um número inteiro decimal. Começa de 1. Pode ser 1 $, 2 $, 3 $, etc. As correspondências normais para os especificadores e argumentos na lista de argumentos são os seguintes: o primeiro especificador à esquerda, na sequência do formato, corresponde ao primeiro argumento na lista de argumentos (da esquerda); O segundo especificador da esquerda, na sequência do formato, corresponde ao segundo argumento na lista de argumentos; O terceiro especificador da esquerda, na sequência do formato, corresponde ao terceiro argumento na lista de argumentos; e assim por diante. argument_index pode ser usado para alterar este pedido. O segmento de código a seguir reverte o pedido:
A saída é:
Aqui: 4, 3, 2 e 1'C' em um especificador corresponde a um personagem na lista de argumentos. O pedido normal é de 1 $, 2 $, 3 $, 4 $ $. Como essa ordem foi revertida na sequência do formato, a saída foi lançada em ordem inversa.
Conversão
A conversão na formatação da string é um personagem especial. Cada especificador de formato, com sua conversão, corresponde a um argumento na lista de argumentos. Uma conversão é um personagem. A tabela a seguir fornece conversões e seus significados:
Personagens de conversão e seus significadosConversão | Significado |
---|---|
b | Para formatar um argumento booleano |
c | Para formatar um argumento que é um personagem unicode |
s | Para formatar um argumento que é uma string |
d | Para formatar um argumento que é um inteiro decimal |
f | Para formatar um argumento que é um número com um ponto decimal |
% | Para imprimir apenas % para o argumento, ' %' |
n | Para causar o restante do texto à direita, ir à próxima linha na saída |
O uso de 's' e 'c' foi ilustrado acima. O restante dos meta-caracteres de conversão será ilustrado nesta seção.
O personagem de conversão B
O segmento de código a seguir mostra como um especificador de formato para um bool é substituído pelo valor booleano de seu argumento correspondente:
A saída é:
É verdade que ele passou.Observe que o argumento, verdadeiro, não está em citações.
O personagem de conversão D
O segmento de código a seguir mostra como um especificador de formato para um número inteiro decimal é substituído pelo valor de seu argumento correspondente:
A saída é:
Eu tenho 5 canetas.Observe que o argumento, 5, não está em citações porque não é um personagem.
O personagem de conversão F
O segmento de código a seguir mostra como um especificador de formato para um número com um ponto decimal é substituído pelo seu valor de argumento correspondente:
Primeiro, observe que o argumento, 2.5, não está em citações porque não é uma corda. A saída é:
2.500000 é uma fração inadequada.2.5 foi formatado para 2.500000, a formatação padrão. Pode ser restrito a 2.5 como dado - veja abaixo.
O caráter de conversão %
Como o símbolo percentual é usado para identificar o especificador de formato, um esquema deve ser desenvolvido para ter o símbolo % como um caráter comum na sequência do formato. O esquema é simples: tenha % como um argumento de personagem na lista de argumentos. Em seguida, use o caráter % de conversão na posição na sequência do formato, onde o símbolo percentual deve aparecer. O seguinte segmento de código ilustra o seguinte:
A saída é:
É 100%.O especificador de formato é %%. O primeiro %do par, %%, é o que identifica o especificador. O segundo % é o personagem de conversão. Como argumento, % está em citações únicas.
O caráter de conversão n
Para causar o restante do texto à direita da sequência do formato para ir na próxima linha na saída, use n. n é um caractere de conversão a ser usado em um especificador de formato. Ilustração:
A saída é:
Primeira sentença.O .parâmetro de precisão do especificador de formato
Este parâmetro indica o número de lugares decimais para um número com lugares decimais. É um número inteiro precedido pelo ponto. Como notado acima, o número esperado de lugares decimais para 2.5 é um personagem; Mas 6 caracteres foram usados, dando 2.500000. O segmento de código a seguir limita isso a 3 lugares decimais:
String str = string.formatar("%.3f é uma fração inadequada.", 2.5);A saída é:
2.500 é uma fração inadequada.O código de precisão aqui é .3 .
O parâmetro de largura do especificador de formato
A largura é o número mínimo de caracteres para substituição na string de formato. Alguns tipos de argumento substituem o especificador de formato por sua largura esperada. No entanto, outros podem substituí -lo por uma largura menor ou maior. Como notado acima, a largura esperada para 2.5 são três caracteres; Mas 8 caracteres foram usados, dando 2.500000. O segmento de código a seguir deve limitar isso a uma largura de 4 caracteres e três lugares decimais:
String str = string.formato ("%4.3f é uma fração inadequada.", 2.5);A saída é:
2.500 é uma fração inadequada.O especificador de formato é %4.3f, onde 4 é a largura e 3 é o número de lugares decimais. Na verdade, existem 5 caracteres na saída, incluindo o ponto decimal, então 4 foram realmente ignorados. O segmento de código a seguir produz uma largura de 7 caracteres e 3 lugares decimais:
String str = string.formato ("%7.3f é uma fração inadequada.", 2.5);A saída é:
"" 2.500 é uma fração inadequada.Observe que dois caracteres espaciais precedem o número do número completo para compensar uma largura de sete caracteres. O número de lugares decimais é 3 . Existem 7 caracteres aqui, todos juntos, incluindo o ponto decimal.
O parâmetro sinalizador do especificador de formato
A bandeira 0
Em vez de preceder um número com espaços, o número pode ser precedido com 0. O seguinte segmento de código ilustra o seguinte:
A saída é:
002.500 é uma fração inadequada.O especificador de formato exato aqui está,
%07.3fque deve ser comparado com a sintaxe do especificador de formato,
%[argument_index $] [sinalizadores] [largura] [.Precisão] ConversãoA ordem dos meta-caracteres do especificador de formato exato respeita a ordem da sintaxe do especificador de formato. A bandeira opcional, 0, vem antes da largura opcional, 7, que vem antes da precisão opcional, .3, de acordo com a sintaxe. 'f' é a conversão (ainda um meta-caractere).
A bandeira +
Com a bandeira +, o resultado inteiro é sempre precedido por - ou + . O programa a seguir ilustra o seguinte:
A saída é:
O resultado é -5 euros.Os parâmetros opcionais de largura e precisão não estão incluídos no especificador de formato exato, %+D. Aqui, D é a conversão para o número inteiro.
Considere o segmento de código,
String str = string.formato ("o resultado é %+d euros.", 5);A saída é,
O resultado é +5 euros.Conclusão
Os argumentos para o método do formato da string são divididos em duas seções. A primeira seção é o primeiro argumento, que deve ser uma string. É a série de interesse. É chamado de sequência de formato, embora ainda possua algumas de suas sub-rastreamentos adequadas (formatadas). O restante dos argumentos é referido como a lista de argumentos. A lista de argumentos tem as substâncias reais que precisam de formatação. Cada uma dessas substâncias corresponde a um especificador de formato na sequência do formato. O especificador de formato usa meta-caracteres para formatar.