Formato de cadena Java

Formato de cadena Java
Formateo de una cadena, permite que otros caracteres, subtruces o valores numéricos se insertaran en una cadena principal, de una manera particular. Considere el código: String Str = String.formato ("Hay %s, %s, %sy %s."," naranja "," plátano "," pera "," limón ");
Sistema.afuera.println (str);

La salida es:

Hay naranja, plátano, pera y limón.

Hay cinco argumentos en este método de formato estático () de la clase de cadena. El primer argumento es la principal cadena de interés, cuyo contenido tiene cuatro marcadores de posición, cada uno de los cuales es %s. Juntos, el resto de los argumentos se denominan una lista de argumentos. En igualdad de condiciones, el primer argumento en la lista de argumentos corresponde al primer marcador de posición en la cadena principal (desde la izquierda). El segundo argumento en la lista corresponde al segundo marcador de posición en la cadena principal. El tercer argumento en la lista de argumentos corresponde al tercer marcador de posición en la cadena principal, y así sucesivamente. En la salida, los marcadores de posición son reemplazados por sus argumentos correspondientes de manera predeterminada desde la lista de argumentos.

Cinco argumentos se consideran aquí. El primero no es parte de la lista de argumentos considerado. En realidad se llama la cadena de formato, aunque aún no se ha formateado. Siempre es una cadena. El resto de los argumentos, que forman la lista de argumentos, pueden ser de diferentes tipos, no necesariamente, cadenas. Nota: Un marcador de posición aquí se llama Formato Especificador.

Todos los argumentos anteriores, se pueden reemplazar con variables, como muestra el siguiente segmento de código:

Cadena a = "naranja", b = "plátano", c = "pera", d = "limón";
Cadena fmtstr = "Hay %s, %s, %sy %s.";
Cadena str = string.formato (fmtstr, a, b, c, d);
Sistema.afuera.println (str);

Este artículo explica los conceptos básicos de formatear una cadena en Java usando especificadores de formato.

Formato de sintaxis del especificador

La sintaxis para el especificador de formato es:

%[argumento_index $] [banderas] [ancho] [.precisión] conversión

Debe comenzar con el signo porcentual, %. Debe terminar con un personaje llamado conversión. En el código anterior, cada especificador consiste en % y 's'. 's' es la conversión. 's' significa cadena. El resto de los parámetros, indicados en los soportes cuadrados en la sintaxis, son opcionales y se explican a continuación.

argumento_index $
argumento_index es un entero decimal. Comienza desde 1. Puede ser 1 $, 2 $, 3 $, etc. Las correspondencias normales para los especificadores y argumentos en la lista de argumentos son las siguientes: el primer especificador de la izquierda, en la cadena de formato, corresponde al primer argumento en la lista de argumentos (desde la izquierda); El segundo especificador de la izquierda, en la cadena de formato, corresponde al segundo argumento en la lista de argumentos; El tercer especificador de la izquierda, en la cadena de formato, corresponde al tercer argumento en la lista de argumentos; etcétera. argumento_index se puede usar para cambiar este orden. El siguiente segmento de código revierte el pedido:

Cadena str = string.Formato ("Aquí: %4 $ C, %3 $ C, %2 $ C y %1 $ C", '1', '2', '3', '4');
Sistema.afuera.println (str);

La salida es:

Aquí: 4, 3, 2 y 1

'C' en un especificador corresponde a un carácter en la lista de argumentos. El pedido normal es 1 $, 2 $, 3 $, 4 $. Dado que este orden se invirtió en la cadena de formato, por lo que la salida salió en orden inverso.

Conversión

La conversión en el formato de cadena es un personaje especial. Cada especificador de formato, con su conversión, corresponde a un argumento en la lista de argumentos. Una conversión es un personaje. La siguiente tabla da conversiones y sus significados:

Personajes de conversión y sus significados
Conversión Significado
b Para formatear un argumento que es booleano
C Para formatear un argumento que es un personaje unicode
s Para formatear un argumento que es una cadena
d Para formatear un argumento que es un entero decimal
F Para formatear un argumento que es un número con un punto decimal
De % Para imprimir solo % para el argumento, ' %'
norte Para hacer que el resto del texto a su derecha, vaya a la siguiente línea en la salida

El uso de 's' y 'c' se ha ilustrado arriba. El resto de los metactores de conversión se ilustrarán en esta sección.

El personaje de conversión B
El siguiente segmento de código muestra cómo un especificador de formato para un bool se reemplaza por el valor booleano de su argumento correspondiente:

Cadena str = string.formato ("Es %B que pasó.", verdadero);
Sistema.afuera.println (str);

La salida es:

Es cierto que pasó.

Tenga en cuenta que el argumento, verdadero, no tiene citas.

El personaje de conversión D
El siguiente segmento de código muestra cómo un especificador de formato para un entero decimal se reemplaza por el valor de su argumento correspondiente:

Cadena str = string.formato ("Tengo %d bolígrafos.", 5);
Sistema.afuera.println (str);

La salida es:

Tengo 5 bolígrafos.

Tenga en cuenta que el argumento, 5, no está en citas porque no es un personaje.

El personaje de conversión F
El siguiente segmento de código muestra cómo un especificador de formato para un número con un punto decimal, se reemplaza por su valor de argumento correspondiente:

Cadena str = string.formato ("%F es una fracción inadecuada.", 2.5);
Sistema.afuera.println (str);

Primero, tenga en cuenta que el argumento, 2.5, no está en citas porque no es una cadena. La salida es:

2.500000 es una fracción inadecuada.

2.5 ha sido formateado a 2.500000, el formato predeterminado. Se puede restringir a 2.5 Como se da - ver más abajo.

El % de personaje de conversión
Dado que el símbolo porcentual se usa para identificar el especificador de formato, se debe desarrollar un esquema para tener el símbolo % como carácter ordinario en la cadena de formato. El esquema es simple: tener % como argumento de personaje en la lista de argumentos. Luego use el carácter de conversión % en la posición en la cadena de formato, donde debe aparecer el símbolo porcentual. El siguiente segmento de código ilustra esto:

Cadena str = string.formato ("Es 100 %%.", '%');
Sistema.afuera.println (str);

La salida es:

Es 100%.

El especificador de formato es %%. El primer %del par, %%, es lo que identifica el especificador. El segundo % es el personaje de conversión. Como argumento, % está en citas individuales.

El personaje de conversión n
Para hacer que el resto del texto a la derecha de la cadena de formato vaya a la siguiente línea en la salida, use N. n es un personaje de conversión que se utilizará en un especificador de formato. Ilustración:

Cadena str = string.formato ("Primera oración.%de oración nsegund.",'\norte');
Sistema.afuera.println (str);

La salida es:

Primera oracion.
Segunda oración.

El .Parámetro de precisión del especificador de formato

Este parámetro indica el número de decimales para un número con lugares decimales. Es un número entero precedido por el punto. Como se indicó anteriormente, el número esperado de lugares decimales para 2.5 es un personaje; Pero se usaron 6 caracteres, dando 2.500000. El siguiente segmento de código limita esto a 3 decimales:

Cadena str = string.formato("%.3F es una fracción incorrecta.", 2.5);
Sistema.afuera.println (str);

La salida es:

2.500 es una fracción incorrecta.

El código de precisión aquí es .3 .

El parámetro de ancho del especificador de formato

El ancho es el número mínimo de caracteres para el reemplazo en la cadena de formato. Algunos tipos de argumentos reemplazan el especificador de formato con su ancho esperado. Sin embargo, otros pueden reemplazarlo con un ancho más pequeño o mayor. Como se indicó anteriormente, el ancho esperado para 2.5 son tres caracteres; Pero se usaron 8 caracteres, dando 2.500000. El siguiente segmento de código debe limitar esto a un ancho de 4 caracteres y tres decimales:

Cadena str = string.formato ("%4.3F es una fracción incorrecta.", 2.5);
Sistema.afuera.println (str);

La salida es:

2.500 es una fracción incorrecta.

El especificador de formato es %4.3f, donde 4 es el ancho, y 3 es el número de decimales. En realidad hay 5 caracteres en la salida, incluido el punto decimal, por lo que 4 fueron ignorados. El siguiente segmento de código produce un ancho de 7 caracteres y 3 decimales:

Cadena str = string.formato ("%7.3F es una fracción incorrecta.", 2.5);
Sistema.afuera.println (str);

La salida es:

"" 2.500 es una fracción incorrecta.

Observe que dos caracteres espaciales preceden al número para el número completo para compensar un ancho de siete caracteres. El número de decimales es 3 . Hay 7 personajes aquí, todos juntos, incluido el punto decimal.

El parámetro de las banderas del especificador de formato

La bandera 0
En lugar de precedir a un número con espacios, el número se puede precedir a 0. El siguiente segmento de código ilustra esto:

Cadena str = string.formato ("%07.3F es una fracción incorrecta.", 2.5);
Sistema.afuera.println (str);

La salida es:

002.500 es una fracción incorrecta.

El especificador de formato exacto aquí es,

%07.3F

que debe compararse con la sintaxis del especificador de formato,

%[argumento_index $] [banderas] [ancho] [.precisión] conversión

El orden de los metacturadores del especificador de formato exacto respeta el orden de la sintaxis del especificador de formato. La bandera opcional, 0, viene antes del ancho opcional, 7, que viene antes de la precisión opcional, .3, de acuerdo con la sintaxis. 'F' es la conversión (sigue siendo un metanal).

La bandera +
Con la bandera +, el resultado entero siempre está precedido por - o + . El siguiente programa ilustra esto:

Cadena str = string.formato ("El resultado es %+d euros.", -5);
Sistema.afuera.println (str);

La salida es:

El resultado es -5 euros.

Los parámetros opcionales de ancho y precisión no se incluyen con el especificador de formato exacto, %+D. Aquí, D es la conversión del entero.

Considere el segmento de código,

Cadena str = string.formato ("El resultado es %+d euros.", 5);
Sistema.afuera.println (str);

La salida es,

El resultado es +5 euros.

Conclusión

Los argumentos para el método de formato de cadena se dividen en dos secciones. La primera sección es el primer argumento, que debe ser una cadena. Es la cadena de interés. Se llama la cadena de formato, aunque todavía tiene algunas de sus subcontras adecuadas (formateadas). El resto de los argumentos se conocen como la lista de argumentos. La lista de argumentos tiene las subcadenas reales que necesitan formatear. Cada una de estas subcadenas corresponde a un especificador de formato en la cadena de formato. El especificador de formato utiliza metacturadores para formatear.