Java:
Интерполяция строки
Как это сделать:
Java ввела String.format() для интерполяции:
public class StringInterpolationExample {
public static void main(String[] args) {
String user = "Алиса";
int points = 1337;
String greeting = String.format("Привет, %s! У тебя %d очков.", user, points);
System.out.println(greeting);
}
}Пример вывода:
Привет, Алиса! У тебя 1337 очков.Для более современной интерполяции начиная с Java 15 используются текстовые блоки и formatted():
public class ModernStringInterpolationExample {
public static void main(String[] args) {
String user = "Боб";
double accountBalance = 1234.56;
String message = """
Уважаемый %s,
Ваш текущий баланс составляет $%.2f.
""".formatted(user, accountBalance);
System.out.println(message);
}
}Пример вывода:
Уважаемый Боб,
Ваш текущий баланс составляет $1234.56.Подробнее
До интерполяции Java использовала конкатенацию: String greeting = "Привет, " + user + "!";. Это было громоздко и подвержено ошибкам, особенно когда строки становились сложными.
Исторически, такие языки, как Perl и PHP, имели интерполяцию. Java догнала их гораздо позже. String.format() и PrintStream.printf() предлагают аналогичную функциональность, используя спецификаторы формата, которые говорят Java, как обрабатывать переменные.
Альтернативы? Кроме String.format(), у нас есть MessageFormat и StringBuilder, но они не так удобны для базовой интерполяции. Начиная с Java 15, текстовые блоки упростили многострочные строки и добавили formatted() для упрощения интерполяции непосредственно на месте.
С точки зрения реализации, String.format() использует Formatter, мощный движок с множеством опций форматирования. Но будьте осторожны, сложные строки могут снизить производительность вашего приложения, если вы не будете осторожны.