String.indent() и transform()
Добавление отступов к тексту и цепочечное применение строковых преобразований.
Сравнение кода
✕ Java 8
String[] lines = text.split("\n");
StringBuilder sb = new StringBuilder();
for (String line : lines) {
sb.append(" ").append(line)
.append("\n");
}
String indented = sb.toString();
✓ Java 12+
String indented = text.indent(4);
String result = text
.transform(String::strip)
.transform(s -> s.replace(" ", "-"));
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Встроенный метод
Добавление отступов — частая операция, теперь это один вызов.
Цепочки вызовов
transform() позволяет строить цепочки операций над строками.
Чистый код
Не нужно вручную разбивать строки и писать циклы с StringBuilder.
Старый подход
Ручное добавление отступа
Современный подход
indent() / transform()
Начиная с JDK
12
Сложность
Начинающий
Поддержка JDK
String.indent() и transform()
Доступно
Широко доступно с JDK 12 (март 2019)
Как это работает
indent(n) добавляет n пробелов к каждой строке. transform(fn) применяет произвольную функцию и возвращает результат, позволяя выстраивать цепочки строковых операций.
Связанная документация
Доказательство