Java многоредов низ

1. Общ преглед

Поради факта, че в Java все още няма роден многоредов клас низове, е малко сложно да се създават и използват многоредови низове.

В този урок разглеждаме няколко метода за създаване и използване на многоредови низове в Java .

2. Получаване на разделител на линии

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

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

Ще използваме тази newLine в следващите раздели за създаване на многоредови низове.

3. Конкатенация на низове

Конкатенацията на низове е лесен естествен метод, който може да се използва за създаване на многоредови низове:

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"; }

4. Присъединяване към низ

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

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

5. String Builder

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(); }

6. Струнен писател

StringWriter е друг метод, който можем да използваме за създаване на многоредов низ. Тук нямаме нужда от newLine , защото използваме 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(); }

7. Гуава Дърводелец

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

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

8. Зареждане от файл

Java чете файлове точно такива, каквито са. Това означава, че ако имаме многоредов низ в текстов файл, ще имаме същия низ, когато четем файла. Има много начини за четене от файл в Java.

Всъщност е добра практика да отделяте дълги низове от кода:

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

9. Използване на IDE функции

Много съвременни IDE поддържат многоредово копиране / поставяне. Eclipse и IntelliJ IDEA са примери за такива IDE. Можем просто да копираме нашия многоредов низ и да поставим вътре в две двойни кавички в тези IDE.

Очевидно този метод не работи за създаване на низове по време на изпълнение, но това е бърз и лесен начин за получаване на многоредов низ.

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

В този урок научихме няколко метода за изграждане на многоредови низове в Java.

Добрата новина е, че Java 13 ще има естествена поддръжка за многоредови низове чрез Text Blocks. Излишно е да казвам, че всички методи по-горе все още работят в Java 13.

Кодът за всички методи в тази статия е достъпен в Github.