Java String Formating

Java String Formating
Formatar uma string, permite que outros caracteres, sub-rupias ou valores numéricos, sejam inseridos em uma sequência principal, de uma maneira particular. Considere o código: string str = string.formato ("há %s, %s, %s e %s."," Orange "," Banana "," Pear "," Lemon ");
Sistema.fora.println (str);

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";
String fmtstr = "há %s, %s, %s e %s.";
String str = string.formato (FMTSTR, A, B, C, D);
Sistema.fora.println (str);

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ão

Deve 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:

String str = string.formato ("Aqui: %4 $ C, %3 $ C, %2 $ C e %1 $ C", '1', '2', '3', '4');
Sistema.fora.println (str);

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 significados
Conversã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:

String str = string.formato ("É %B que ele passou.", verdadeiro);
Sistema.fora.println (str);

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:

String str = string.formato ("eu tenho %d canetas.", 5);
Sistema.fora.println (str);

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:

String str = string.formato ("%f é uma fração imprópria.", 2.5);
Sistema.fora.println (str);

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:

String str = string.formato ("é 100 %%.", '%');
Sistema.fora.println (str);

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:

String str = string.formato ("Primeira frase.%nsecond sentença.", '\ n');
Sistema.fora.println (str);

A saída é:

Primeira sentença.
Segunda frase.

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);
Sistema.fora.println (str);

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);
Sistema.fora.println (str);

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);
Sistema.fora.println (str);

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:

String str = string.formato ("%07.3f é uma fração inadequada.", 2.5);
Sistema.fora.println (str);

A saída é:

002.500 é uma fração inadequada.

O especificador de formato exato aqui está,

%07.3f

que deve ser comparado com a sintaxe do especificador de formato,

%[argument_index $] [sinalizadores] [largura] [.Precisão] Conversão

A 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:

String str = string.formato ("o resultado é %+d euros.", -5);
Sistema.fora.println (str);

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);
Sistema.fora.println (str);

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.