Ответ 1
Если вы используете Java 5 или выше, вы можете использовать String.format
:
urlString += String.format("u1=%s;u2=%s;u3=%s;u4=%s;", u1, u2, u3, u4);
Подробнее см. Formatter
.
Строковое построение в Java меня пугает. Я продолжаю делать такие вещи, как:
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 + "?";
Или, используя StringBuilder, что-то вроде этого:
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("?");
ИСКУССТВО Я что-то упускаю. У нас есть лучший способ. Что-то вроде:
Вместо:
urlString += "u1=" + u1 + ";u2=" + u2 + ";u3=" + u3 + ";u4=" + u4 + ";";
делать:
urlString += Interpolator("u1=%s;u2=%s;u3=%s;u4=%s;", u1, u2, u3, u4);
или
urlStringBuilder.append(Interpolator("u1=%s;u2=%s;u3=%s;u4=%s;", u1, u2, u3, u4));
Если вы используете Java 5 или выше, вы можете использовать String.format
:
urlString += String.format("u1=%s;u2=%s;u3=%s;u4=%s;", u1, u2, u3, u4);
Подробнее см. Formatter
.
Обратите внимание, что в Java нет переменной-интерполяции. Переменная-интерполяция - это переменная подстановка со значением внутри строки. Пример в Ruby:
#!/usr/bin/ruby
age = 34
name = "William"
puts "#{name} is #{age} years old"
интерпретатор Ruby автоматически заменяет переменные своими значениями внутри строки. Тот факт, что мы будем делать интерполяцию, намекает на символы сигил. В Ruby, это #{}. В Perl это может быть $,% или @. Java будет печатать только такие символы, он не расширил бы их.
Переменная интерполяция не поддерживается в Java. Вместо этого мы имеют строковое форматирование.
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);
}
}
В Java мы создаем новую строку, используя метод String.format(). Результат тот же, но методы разные.
String.format()
на помощь!
Просто добавьте, что есть также java.text.MessageFormat с тем, чтобы иметь числовые индексы аргументов.
Добавление первого примера из документации
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);
Результат:
At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.
Вы можете использовать Kotlin, Super (cede of) Java для JVM, он имеет хороший способ интерполяции строк, таких как ES5, Ruby и Python.
class Client(val firstName: String, val lastName: String) {
val fullName = "$firstName $lastName"
}