lineas - Interpolación variable de cadena Java
string en varias lineas javascript (5)
Esta pregunta ya tiene una respuesta aquí:
- Cómo formatear cadenas en Java 6 respuestas
La construcción de cadenas en Java me confunde. Me aventuro a hacer cosas como las siguientes:
url += "u1=" + u1 + ";u2=" + u2 + ";u3=" + u3 + ";u4=" + u4 + ";";
url += "x=" + u1 + ";y=" + u2 + ";z=" + u3 + ";da1=" + u4 + ";";
url += "qty=1;cost=" + orderTotal + ";ord=" + orderId + "?";
O, usando StringBuilder, algo como esto:
url.append("u1=");
url.append(u1);
url.append(";u2=");
url.append(u2);
url.append(";u3=");
url.append(u3);
url.append(";u4=");
url.append(u4);
url.append(";");
url.append("x=");
url.append(u1);
url.append(";y=");
url.append(u2);
url.append(";z=");
url.append(u3);
url.append(";da1=");
url.append(u4);
url.append(";");
url.append("qty=1;");
url.append("cost=");
url.append(orderTotal);
url.append(";ord=");
url.append(orderId);
url.append("?");
SURELY me estoy perdiendo algo. Tiene que haber una mejor manera. Algo como:
En lugar de:
urlString += "u1=" + u1 + ";u2=" + u2 + ";u3=" + u3 + ";u4=" + u4 + ";";
hacer:
urlString += Interpolator("u1=%s;u2=%s;u3=%s;u4=%s;", u1, u2, u3, u4);
o:
urlStringBuilder.append(Interpolator("u1=%s;u2=%s;u3=%s;u4=%s;", u1, u2, u3, u4));
Puede usar Kotlin, el Super (cede of) Java for JVM, tiene una forma agradable de interpolar cadenas como las de ES5, Ruby y Python.
class Client(val firstName: String, val lastName: String) {
val fullName = "$firstName $lastName"
}
Si usa Java 5 o una String.format
superior, puede usar String.format
:
urlString += String.format("u1=%s;u2=%s;u3=%s;u4=%s;", u1, u2, u3, u4);
Ver Formatter
para más detalles.
Solo para agregar que también hay java.text.MessageFormat con la ventaja de tener índices de argumento numérico.
Anexando el primer ejemplo de la documentación
int planet = 7;
String event = "a disturbance in the Force";
String result = MessageFormat.format(
"At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
planet, new Date(), event);
Resultado:
At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.
Tenga en cuenta que no hay interpolación variable en Java. La interpolación variable es la sustitución variable con su valor dentro de una cadena. Un ejemplo en Ruby:
#!/usr/bin/ruby
age = 34
name = "William"
puts "#{name} is #{age} years old"
El intérprete de Ruby reemplaza automáticamente las variables con sus valores dentro de una cadena. El hecho de que vamos a hacer interpolación está sugerido por los caracteres sigil. En Ruby, es # {}. En Perl, podría ser $,% o @. Java solo imprimiría tales caracteres, no los expandiría.
La interpolación variable no es compatible con Java. En lugar de esto, tenemos formato de cadenas.
package com.zetcode;
public class StringFormatting
{
public static void main(String[] args)
{
int age = 34;
String name = "William";
String output = String.format("%s is %d years old.", name, age);
System.out.println(output);
}
}
En Java, construimos una nueva cadena usando el método String.format (). El resultado es el mismo, pero los métodos son diferentes.
String.format al rescate !!