Overzicht
String formatteren en het genereren van tekstuitvoer komt vaak voor tijdens het programmeren. In veel gevallen is het nodig een nieuwe regel aan een string toe te voegen om de uitvoer te formatteren.
Laten we eens bespreken hoe je newline-tekens kunt gebruiken.
Verder lezen:
Checken op lege of lege strings in Java
Check If a String Contains a Substring
Newline Characters toevoegen in een String
Besturingssystemen hebben speciale tekens die het begin van een nieuwe regel aanduiden. In Linux bijvoorbeeld wordt een nieuwe regel aangeduid met “\n”, ook wel Line Feed genoemd. In Windows wordt een nieuwe regel aangeduid met “\r”, ook wel Carriage Return en Line Feed, of CRLF genoemd.
Een nieuwe regel toevoegen in Java is zo simpel als het toevoegen van “\n” , “\r”, of “\r\n” aan het eind van onze string.
2.1. Gebruik van CRLF regeleindes
Voor dit voorbeeld willen we een paragraaf maken met twee tekstregels. In het bijzonder willen we dat regel 2 op een nieuwe regel na regel 1 komt.
Voor een Unix/Linux/New Mac-gebaseerd OS kunnen we “\n” gebruiken:
String line1 = "Humpty Dumpty sat on a wall.";String line2 = "Humpty Dumpty had a great fall.";String rhyme = line1 + "\n" + line2;
Als we op een Windows-gebaseerd OS zitten, kunnen we “\r” gebruiken:
rhyme = line1 + "\r\n" + line2;
Als we op een oud Mac-gebaseerd OS zitten, kunnen we “\r” gebruiken:
rhyme = line1 + "\r" + line2;
We hebben drie methoden gedemonstreerd om een nieuwe regel toe te voegen, maar helaas zijn ze platformafhankelijk.
2.2. Platform-onafhankelijke regelscheidingstekens gebruiken
We kunnen systeem gedefinieerde constanten gebruiken als we onze code platform-onafhankelijk willen maken.
Bijv. het gebruik van System.lineSeparator() voor het geven van een regelscheidingsteken:
rhyme = line1 + System.lineSeparator() + line2;
Of we kunnen ook System.getProperty(“line.separator”) gebruiken:
rhyme = line1 + System.getProperty("line.separator") + line2;
2.3. Platform-onafhankelijke newline-tekens gebruiken
Hoewel lijnscheidingstekens platform-onafhankelijk zijn, dwingen ze ons om strings aan elkaar te plakken.
Als we iets gebruiken als System.out.printf of String.format, dan kan het platform-onafhankelijke newline karakter, %n, direct in een string worden gebruikt:
rhyme = "Humpty Dumpty sat on a wall.%nHumpty Dumpty had a great fall.";
Dit is hetzelfde als System.lineSeparator() in onze string opnemen, maar we hoeven de string niet in meerdere delen op te splitsen.
Newline karakters toevoegen in een HTML-pagina
Stel dat we een string maken die onderdeel is van een HTML-pagina. In dat geval kunnen we een HTML-einde-tag toevoegen <br>.
We kunnen ook Unicode-tekens “& #13;” (Carriage Return) en “& #10;” (Line Feed) gebruiken. Hoewel deze tekens werken, werken ze niet precies zoals we zouden verwachten op alle platformen. In plaats daarvan is het beter om <br> te gebruiken voor regeleindes.
Daarnaast kunnen we in sommige HTML-elementen “\n” gebruiken om een regel te breken.
Al met al zijn dit de drie methoden om een regel te breken in HTML. We kunnen beslissen welke te gebruiken, afhankelijk van de HTML-tag die we gebruiken.
3.1. HTML Break Tag
We kunnen de HTML break tag <br> gebruiken om een regel te breken:
rhyme = line1 + "<br>" + line2;
De <br> tag voor het breken van een regel werkt in bijna alle HTML elementen zoals <body>
, <p><pre>, enz. Merk echter op dat het niet werkt in de <textarea> tag.
3.2. Newline Character
We kunnen ‘\n’ gebruiken om een regel te breken als tekst ingesloten is in <pre> of <textarea> tag:
rhyme = line1 + "\n" + line2;
3.3. Unicode-tekens
Ten slotte kunnen we Unicode-tekens “& #13;” (Carriage Return) en “& #10;” (Line Feed) gebruiken om een regel te breken. Bijvoorbeeld, in de <textarea> tag kunnen we een van deze gebruiken:
rhyme = line1 + "" + line2;rhyme = line1 + "" + line2;
Voor de <pre> tag zullen beide van de onderstaande regels werken:
rhyme = line1 + "" + line2;rhyme = line1 + "" + line2;
Het verschil tussen \n en \r
H\r en \n zijn tekens met ASCII-waarden van respectievelijk 13 (CR) en 10 (LF). Ze geven beide een breuk tussen twee regels aan, maar besturingssystemen gebruiken ze verschillend.
On Windows wordt een reeks van twee tekens gebruikt om een nieuwe regel te beginnen, CR onmiddellijk gevolgd door LF. Op Unix-achtige systemen daarentegen wordt alleen LF gebruikt.
Bij het schrijven van Java-applicaties moeten we goed opletten welke regeleinde-tekens we gebruiken, omdat de applicaties zich anders gedragen, afhankelijk van het besturingssysteem waarop ze draaien.
De veiligste en meest cross-compatibele optie is het gebruik van System.lineSeparator(). Op deze manier hoeven we geen rekening te houden met het besturingssysteem.
Conclusie
In dit artikel hebben we besproken hoe we newline-tekens aan een string kunnen toevoegen in Java.
We hebben ook gezien hoe we platformonafhankelijke code kunnen schrijven voor een nieuwe regel met behulp van System.lineSeparator() en System.getProperty(“line.separator”).
Ten slotte hebben we gezien hoe we een nieuwe regel kunnen toevoegen als we een HTML-pagina genereren.
De volledige implementatie van dit artikel is te vinden op GitHub.
Ga aan de slag met Spring 5 en Spring Boot 2, via de Leer Spring cursus:
>> CHECK OUT THE COURSE