Panoramica
La formattazione delle stringhe e la generazione di output di testo si presentano spesso durante la programmazione. In molti casi, c’è la necessità di aggiungere una nuova riga ad una stringa per formattare l’output.
Discutiamo come usare i caratteri newline.
Altra lettura:
Controllo di stringhe vuote o vuote in Java
Controlla se una stringa contiene una sottostringa
Aggiungere caratteri di newline in una stringa
I sistemi operativi hanno caratteri speciali che denotano l’inizio di una nuova linea. Per esempio, in Linux una nuova linea è denotata da “\n”, chiamato anche Line Feed. In Windows, una nuova linea è indicata con “\r\n”, a volte chiamato Carriage Return and Line Feed, o CRLF.
Aggiungere una nuova linea in Java è semplice come includere “\n” , “\r”, o “\r\n” alla fine della nostra stringa.
2.1. Usare le interruzioni di riga CRLF
Per questo esempio, vogliamo creare un paragrafo usando due righe di testo. In particolare, vogliamo che la riga2 appaia in una nuova riga dopo la riga1.
Per un sistema operativo Unix/Linux/New Mac possiamo usare “\n”:
String line1 = "Humpty Dumpty sat on a wall.";String line2 = "Humpty Dumpty had a great fall.";String rhyme = line1 + "\n" + line2;
Se siamo su un sistema operativo Windows, possiamo usare “\r\n”:
rhyme = line1 + "\r\n" + line2;
Per un vecchio sistema operativo basato su Mac, possiamo usare “\r”:
rhyme = line1 + "\r" + line2;
Abbiamo dimostrato tre metodi per aggiungere una nuova linea, ma purtroppo, dipendono dalla piattaforma.
2.2. Usare separatori di riga indipendenti dalla piattaforma
Possiamo usare costanti definite dal sistema quando vogliamo che il nostro codice sia indipendente dalla piattaforma.
Per esempio, usando System.lineSeparator() per dare un separatore di riga:
rhyme = line1 + System.lineSeparator() + line2;
O possiamo anche usare System.getProperty(“line.separator”):
rhyme = line1 + System.getProperty("line.separator") + line2;
2.3. Usare i caratteri newline indipendenti dalla piattaforma
Anche se i separatori di linea forniscono indipendenza dalla piattaforma, ci costringono a concatenare le nostre stringhe.
Se stiamo usando qualcosa come System.out.printf o String.format, allora il carattere newline indipendente dalla piattaforma, %n, può essere usato direttamente all’interno di una stringa:
rhyme = "Humpty Dumpty sat on a wall.%nHumpty Dumpty had a great fall.";
Questo è lo stesso che includere System.lineSeparator() nella nostra stringa, ma non abbiamo bisogno di dividere la stringa in più parti.
Aggiungere caratteri newline in una pagina HTML
Supponiamo di creare una stringa che sia parte di una pagina HTML. In questo caso, possiamo aggiungere un tag HTML di interruzione <br>.
Possiamo anche usare i caratteri Unicode “& #13;” (Carriage Return) e “& #10;” (Line Feed). Anche se questi caratteri funzionano, non funzionano esattamente come ci si potrebbe aspettare su tutte le piattaforme. Invece, è meglio usare <br> per le interruzioni di linea.
Inoltre, possiamo usare “\n” in alcuni elementi HTML per interrompere una linea.
In generale, questi sono i tre metodi per interrompere una linea in HTML. Possiamo decidere quale usare a seconda del tag HTML che stiamo usando.
3.1. Tag HTML Break
Possiamo usare il tag HTML break <br> per interrompere una linea:
rhyme = line1 + "<br>" + line2;
Il tag <br> per interrompere una linea funziona in quasi tutti gli elementi HTML come <body><p><pre>, ecc. Tuttavia, si noti che non funziona nel tag <textarea>.
3.2. Carattere Newline
Possiamo usare ‘\n’ per interrompere una linea se il testo è racchiuso in <pre> o <textarea> tag:
rhyme = line1 + "\n" + line2;
3.3. Caratteri Unicode
Infine, possiamo usare i caratteri Unicode “& #13;” (Carriage Return) e “& #10;” (Line Feed) per interrompere una linea. Per esempio, nel tag <textarea> possiamo usare uno di questi:
rhyme = line1 + "" + line2;rhyme = line1 + "" + line2;
Per il tag <pre>, entrambe le linee qui sotto funzioneranno:
rhyme = line1 + "" + line2;rhyme = line1 + "" + line2;
La differenza tra \n e \r
\r e \n sono caratteri indicati con valori ASCII di 13 (CR) e 10 (LF), rispettivamente. Entrambi rappresentano un’interruzione tra due linee, ma i sistemi operativi li usano in modo diverso.
Su Windows, una sequenza di due caratteri è usata per iniziare una nuova linea, CR immediatamente seguito da LF. Al contrario, sui sistemi Unix-like, viene usato solo LF.
Quando scriviamo applicazioni Java, dobbiamo fare attenzione ai caratteri di interruzione di riga che usiamo perché le applicazioni si comporteranno diversamente a seconda del sistema operativo su cui gireranno.
L’opzione più sicura e più compatibile è quella di usare System.lineSeparator(). In questo modo, non dovremo tenere conto del sistema operativo.
Conclusione
In questo articolo, abbiamo discusso come aggiungere caratteri newline a una stringa in Java.
Abbiamo anche visto come scrivere codice indipendente dalla piattaforma per una nuova linea usando System.lineSeparator() e System.getProperty(“line.separator”).
Infine, abbiamo concluso con come aggiungere una nuova linea nel caso in cui stiamo generando una pagina HTML.
L’implementazione completa di questo articolo può essere trovata su GitHub.
Inizia con Spring 5 e Spring Boot 2, attraverso il corso Learn Spring:
>> CHECK OUT THE COURSE