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.