separador rellenar numeros moneda miles izquierda funciona formato especificadores ejemplo decimales con como ceros java string string-formatting

rellenar - Cómo formatear cadenas en Java



string.format java ejemplo (6)

Eche un vistazo a String.format . Sin embargo, tenga en cuenta que se necesitan especificadores de formato similares a los de la familia de funciones printf de C, por ejemplo:

String.format("Hello %s, %d", "world", 42);

Volvería "Hello world 42". Puede encontrar this útil al aprender sobre los especificadores de formato. Andy Thomas-Cramer tuvo la amabilidad de dejar this enlace en un comentario a continuación, que parece apuntar a las especificaciones oficiales. Los más utilizados son:

  • % s - inserta una cadena
  • % d - insertar un entero con signo (decimal)
  • % f - inserta un número real, notación estándar

Esto es radicalmente diferente de C #, que usa referencias posicionales con un especificador de formato opcional. Eso significa que no puedes hacer cosas como:

String.format("The {0} is repeated again: {0}", "word");

... sin repetir el parámetro pasado a printf / formato. (ver el comentario de Scrum Meister a continuación)

Si solo desea imprimir el resultado directamente, puede encontrar System.out.printf ( PrintStream.printf ) a su gusto.

Pregunta primitiva, pero ¿cómo formateo cadenas como esta?

"Paso {1} de {2}"

sustituyendo variables usando Java? En C # es fácil.


Esta solución funcionó para mí. Necesitaba crear URL para un cliente REST dinámicamente, así que creé este método, así que solo tiene que pasar el restURL como este

/customer/{0}/user/{1}/order

y agrega tantos params como necesites:

public String createURL (String restURL, Object ... params) { return new MessageFormat(restURL).format(params); }

Solo tienes que llamar a este método así:

createURL("/customer/{0}/user/{1}/order", 123, 321);

La salida

"/ cliente / 123 / usuario / 321 / orden"


He escrito mi método simple para ello:

public class SomeCommons { /** Message Format like ''Some String {0} / {1}'' with arguments */ public static String msgFormat(String s, Object... args) { return new MessageFormat(s).format(args); } }

para que pueda usarlo como:

SomeCommons.msfgFormat("Step {1} of {2}", 1 , "two");


Si elige no utilizar String.format, la otra opción es el + operador binario

String str = "Step " + a + " of " + b;

Este es el equivalente de

new StringBuilder("Step ").append(String.valueOf(1)).append(" of ").append(String.valueOf(2));

Cualquiera que sea tu uso es tu elección. StringBuilder es más rápido, pero la diferencia de velocidad es marginal. Prefiero usar el operador + (que hace un StringBuilder.append(String.valueOf(X))) y me resulta más fácil de leer.


Además de String.format, también eche un vistazo a java.text.MessageFormat . El formato menos escueto y un poco más cercano al ejemplo de C # que ha proporcionado y también puede usarlo para analizar.

Por ejemplo:

int someNumber = 42; String someString = "foobar"; Object[] args = {new Long(someNumber), someString}; MessageFormat fmt = new MessageFormat("String is /"{1}/", number is {0}."); System.out.println(fmt.format(args));

Un ejemplo más agradable aprovecha las mejoras de varargs y autoboxing en Java 1.5 y convierte lo anterior en un juego de una sola línea:

MessageFormat.format("String is /"{1}/", number is {0}.", 42, "foobar");

MessageFormat es un poco más agradable para hacer plurales i18nized con el modificador de elección. Para especificar un mensaje que utilice correctamente la forma singular cuando una variable es 1 y plural de lo contrario, puede hacer algo como esto:

String formatString = "there were {0} {0,choice,0#objects|1#object|1<objects}"; MessageFormat fmt = new MessageFormat(formatString); fmt.format(new Object[] { new Long(numberOfObjects) });


public class StringFormat { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("================================"); for(int i=0;i<3;i++){ String s1=sc.next(); int x=sc.nextInt(); System.out.println(String.format("%-15s%03d",s1,x)); } System.out.println("================================"); } }

outpot "============================="
ved15space123 ved15space123 ved15space123 "=============================

Solución Java

  • El "-" se usa para sangría izquierda

  • El "15" hace que la longitud mínima de la cuerda sea 15

  • La "s" (que es unos pocos caracteres después de%) será sustituida por nuestro String
  • El 0 rellena nuestro entero con 0 a la izquierda
  • El 3 hace que nuestro número entero sea una longitud mínima de 3