Перейти к основному содержимому

Многострочная строка Java

· 4 мин. чтения

Задача: Наибольшая подстрока палиндром

Для заданной строки s, верните наибольшую подстроку палиндром входящую в s. Подстрока — это непрерывная непустая последовательность символов внутри строки. Стока является палиндромом, если она читается одинаково в обоих направлениях...

ANDROMEDA 42

1. Обзор

В этой статье мы узнаем, как объявлять многострочные строки в Java.

Теперь, когда вышла Java 15, мы можем использовать новую встроенную функцию, называемую текстовыми блоками.

Мы также рассмотрим другие методы, если мы не можем использовать эту функцию.

2. Текстовые блоки

Мы можем использовать текстовые блоки , объявив строку с помощью «» (три двойных кавычки) :

public String textBlocks() {
    return """
        Get busy living
        or
        get busy dying.
        --Stephen King""";
}

На сегодняшний день это самый удобный способ объявить многострочную строку. Действительно, нам не нужно иметь дело с разделителями строк или отступами , как мы можем прочитать в нашей специальной статье .

Эта функция доступна в Java 15, а также в Java 13 и 14, если мы включим функцию предварительного просмотра .

В следующих главах мы рассмотрим другие методы, подходящие, если мы используем предыдущую версию Java или если текстовые блоки неприменимы.

3. Получение разделителя строк

Каждая операционная система может иметь свой собственный способ определения и распознавания новых строк. В Java очень легко получить разделитель строк операционной системы:

String newLine = System.getProperty("line.separator");

Мы собираемся использовать эту новую строку в следующих разделах для создания многострочных строк.

4. Конкатенация строк

Конкатенация строк — это простой нативный метод, который можно использовать для создания многострочных строк:

public String stringConcatenation() {
return "Get busy living"
.concat(newLine)
.concat("or")
.concat(newLine)
.concat("get busy dying.")
.concat(newLine)
.concat("--Stephen King");
}

Использование оператора + — это еще один способ добиться того же. Компиляторы Java переводят concat() и оператор + одинаково:

public String stringConcatenation() {
return "Get busy living"
+ newLine
+ "or"
+ newLine
+ "get busy dying."
+ newLine
+ "--Stephen King";
}

5. Соединение строк

Java 8 представила String#join , который принимает разделитель вместе с некоторыми строками в качестве аргументов. Он возвращает окончательную строку, в которой все входные строки объединены разделителем:

public String stringJoin() {
return String.join(newLine,
"Get busy living",
"or",
"get busy dying.",
"--Stephen King");
}

6. Конструктор строк

StringBuilder — это вспомогательный класс для создания String s. StringBuilder появился в Java 1.5 как замена StringBuffer . Это хороший выбор для построения огромных строк в цикле:

public String stringBuilder() {
return new StringBuilder()
.append("Get busy living")
.append(newLine)
.append("or")
.append(newLine)
.append("get busy dying.")
.append(newLine)
.append("--Stephen King")
.toString();
}

7. Строковый писатель

StringWriter — это еще один метод, который мы можем использовать для создания многострочной строки. Здесь нам не нужна новая строка , потому что мы используем PrintWriter . Функция println автоматически добавляет новые строки:

public String stringWriter() {
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
printWriter.println("Get busy living");
printWriter.println("or");
printWriter.println("get busy dying.");
printWriter.println("--Stephen King");
return stringWriter.toString();
}

8. Столяр из гуавы

Использование внешней библиотеки только для такой простой задачи не имеет особого смысла, однако, если проект уже использует библиотеку для других целей, мы можем ее использовать. Например, очень популярна библиотека Google Guava. В Guava есть класс Joiner , который может создавать многострочные строки:

public String guavaJoiner() {
return Joiner.on(newLine).join(ImmutableList.of("Get busy living",
"or",
"get busy dying.",
"--Stephen King"));
}

9. Загрузка из файла

Java читает файлы такими, какие они есть. Это означает, что если у нас есть многострочная строка в текстовом файле, у нас будет такая же строка при чтении файла. В Java существует множество способов чтения из файла .

На самом деле рекомендуется отделять длинные строки от кода:

public String loadFromFile() throws IOException {
return new String(Files.readAllBytes(Paths.get("src/main/resources/stephenking.txt")));
}

10. Использование функций IDE

Многие современные IDE поддерживают многострочное копирование/вставку. Примерами таких IDE являются Eclipse и IntelliJ IDEA. Мы можем просто скопировать нашу многострочную строку и вставить ее внутрь двух двойных кавычек в этих IDE.

Очевидно, что этот метод не работает для создания строки во время выполнения, но это быстрый и простой способ получить многострочную строку.

11. Заключение

В этом руководстве мы изучили несколько методов построения многострочных строк в Java.

Хорошей новостью является то, что Java 15 имеет встроенную поддержку многострочных строк с помощью текстовых блоков .

Все остальные рассмотренные методы можно использовать в Java 15 или любой предыдущей версии.

Код всех методов из этой статьи доступен на Github .