Java multi-line streng

1. Oversigt

På grund af det faktum, at der endnu ikke er nogen native multi-line streng klasse i Java, er det lidt vanskeligt at oprette og udnytte multi-line strenge.

I denne vejledning går vi gennem flere metoder til lav og brug strenge med flere linjer i Java.

2. Sådan får du linjeseparatoren

Hvert operativsystem kan have sin egen måde at definere og genkende nye linjer på. I Java er det meget let at få operativsystemets linjeseparator:

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

Vi skal bruge dette ny linje i de følgende sektioner for at oprette strenge med flere linjer.

3. Strengsammenkædning

String sammenkædning er en let indfødt metode, der kan bruges til at oprette strenge med flere linjer:

public String stringConcatenation () {return "Få travlt med at leve" .concat (newLine) .concat ("eller") .concat (newLine) .concat ("få travlt med at dø.") .concat (newLine) .concat ("- Stephen King "); }

Brug af + -operatøren er en anden måde at opnå det samme på. Java-kompilatorer oversættes concat () og + -operatøren på samme måde:

public String stringConcatenation () {return "Få travlt med at leve" + newLine + "eller" + newLine + "få travlt med at dø." + newLine + "--Stephen King"; }

4. String Join

Java 8 introduceret String # join, som tager en afgrænser sammen med nogle strenge som argumenter. Det returnerer en endelig streng, hvor alle inputstrenge er forbundet sammen med afgrænseren:

public String stringJoin () {return String.join (newLine, "Få travlt med at leve", "eller", "få travlt med at dø.", "--Stephen King"); }

5. String Builder

StringBuilder er en hjælperklasse at bygge Snors. StringBuilder blev introduceret i Java 1.5 som erstatning for StringBuffer. Det er et godt valg til at bygge store strenge i en løkke:

offentlig String stringBuilder () {returner ny StringBuilder () .append ("Få travlt med at leve") .append (newLine) .append ("eller") .append (newLine) .append ("få travlt med at dø.") .append ( newLine) .append ("- Stephen King") .toString (); }

6. String Writer

StringWriter er en anden metode, som vi kan bruge til at oprette en streng med flere linjer. Vi har ikke brug for det ny linje her, fordi vi bruger PrintWriter. Det println funktion tilføjer automatisk nye linjer:

public String stringWriter () {StringWriter stringWriter = new StringWriter (); PrintWriter printWriter = ny PrintWriter (stringWriter); printWriter.println ("Få travlt med at leve"); printWriter.println ("eller"); printWriter.println ("få travlt med at dø."); printWriter.println ("- Stephen King"); return stringWriter.toString (); }

7. Guava Snedker

Brug af et eksternt bibliotek til en simpel opgave som denne giver ikke særlig mening, men hvis projektet allerede bruger biblioteket til andre formål, kan vi bruge det. For eksempel er Googles Guava-bibliotek meget populært. Guava har en Snedker klasse, der er i stand til at bygge strenge med flere linjer:

public String guavaJoiner () {return Joiner.on (newLine) .join (ImmutableList.of ("Få travlt med at leve", "eller", "få travlt med at dø.", "--Stephen King")); }

8. Indlæser fra en fil

Java læser filer nøjagtigt som de er. Dette betyder, at hvis vi har en streng med flere linjer i en tekstfil, har vi den samme streng, når vi læser filen. Der er mange måder at læse fra en fil i Java.

Faktisk er det en god praksis at adskille lange strenge fra kode:

offentlig String loadFromFile () kaster IOException {returner ny streng (Files.readAllBytes (Paths.get ("src / main / resources / stephenking.txt"))); }

9. Brug af IDE-funktioner

Mange moderne IDE'er understøtter kopiering / indsættelse af flere linjer. Eclipse og IntelliJ IDEA er eksempler på sådanne IDE'er. Vi kan simpelthen kopiere vores flerlinjestreng og indsætte to dobbelte anførselstegn i disse IDE'er.

Denne metode fungerer naturligvis ikke til oprettelse af streng i løbetid, men det er en hurtig og nem måde at få en streng med flere linjer.

10. Konklusion

I denne vejledning lærte vi flere metoder til at opbygge streng med flere linjer i Java.

Den gode nyhed er, at Java 13 har indbygget understøttelse af multi-line strenge via tekstblokke. Det er overflødigt at sige, at alle ovenstående metoder stadig fungerer i Java 13.

Koden til alle metoderne i denne artikel er tilgængelig på Github.