2012-03-10 22 views
56

Ok, por lo que todos debemos saber que puede incluir variables en cadenas haciendo:Java - ¿Incluye variables dentro de cadenas?

String string = "A string " + aVariable; 

¿Hay una manera de hacerlo como:

String string = "A string {aVariable}"; 

En otras palabras: Sin tener para cerrar las comillas y agregar signos más. Es muy poco atractivo.

+0

¿Por qué necesita este tipo de manipulación de cadenas? –

+4

@Chandra Por favor, no preguntes por qué, sino más bien explica si es posible. Es solo cómo preferiría hacerlo. Gracias. –

+2

Usa Groovy, luego podrás hacer "Una cadena $ {aVariable}" todo lo que quieras. –

Respuesta

68

Siempre puede usar String.format (....). es decir,

String string = String.format("A String %s %2d", aStringVar, anIntVar); 

No estoy seguro si eso es lo suficientemente atractivo para usted, pero puede ser bastante útil. La sintaxis es la misma que para printf y java.util.Formatter. Lo he usado mucho, especialmente si quiero mostrar datos numéricos tabulares.

+0

Interesante. Esto parece ser solo eso. –

+0

Voy a marcar esto como la respuesta una vez que pasen 10 minutos. –

+1

Sé que esto es una cuestión de opinión, pero no veo cómo 'format' es más atractivo que una simple expresión de concatenación de cadenas.Donde 'format' se vuelve propio es cuando necesitas hacer padding, formateo de números, etcétera. –

38

Esto se denomina interpolación de cadenas; no existe como tal en Java.

Un método consiste en utilizar String.Format:

String string = String.format("A string %s", aVariable); 

Otro enfoque es utilizar una biblioteca de plantillas como Velocity.

+1

¡Las grandes mentes piensan igual! 1+ –

14

También considere java.text.MessageFormat, que utiliza una sintaxis relacionada que tiene índices de argumento numérico. Por ejemplo,

String aVariable = "of ponies"; 
String string = MessageFormat.format("A string {0}.", aVariable); 

resultados en string que contienen la siguiente:

A string of ponies. 

Más comúnmente, la clase se utiliza para su formato numérico y temporal. Se describe un ejemplo de formato de etiqueta JFreeCharthere; la clase RCInfo formatea el panel de estado de un juego.

+1

Para alguien que viene de CSharp de esta manera es más sencillo ya que es similar al string.Format en C#. – Mojtaba

Cuestiones relacionadas