Интерполяция строки

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, мощный движок с множеством опций форматирования. Но будьте осторожны, сложные строки могут снизить производительность вашего приложения, если вы не будете осторожны.

Смотрите также