Il problema
Il codice JAVA proposto ha l’obbiettivo di risolvere il problema del pad string, ovvero della formattazione di una stringa a lunghezza fissa riempiendo i caratteri non utilizzati con spazi, zero o altri caratteri.
Questo tipo di problema si presenta nei report o più in generale nella presentazione dei dati.
La tecnica JAVA pad string può essere utilizzata per riempire gli spazi precedenti ad un importo con il carattere cancelletto (#) o il carattere trattino (–)
Formattazione di un importo:
1 | String.format("%1$10s", 120.99).replace(" ", "#") |
1 2 | OUTPUT: ####120.99 |
oppure per formattare delle stringe a larghezza fissa per ottenere una tabella.
Formattare stringhe in una tabella:
1 2 3 | String.format("| %1$-10s | %2$-10s | %3$-3s |", "Name", "BornDate", "Age") String.format("| %1$-10s | %2$10s | %3$3d |",contact.getName(),contact.getBornDate(),contact.getAge()) String.format("%1$10s", 120.99).replace(" ", "#") |
1 2 3 4 5 | OUTPUT: | Name | BornDate | Age | | Pietro | 1999-03-03 | 23 | | Luca | 1986-02-10 | 36 | | Sonia | 1995-01-04 | 27 | |
ed in generale per creare del testo formattato.
La funzione padString
Nel codice dell’articolo possiamo vedere la funzione padString che ricevuti i parametri
- str: variabile di tipo String che deve essere formattata
- len: lunghezza che si vuole impostare alla stringa in output
- alignLeft: allineamento a sinistra
restituisce una stringa formattata sfruttando il metodo format di String.
Funzionamento String.format
Il metodo format prevede due parametri principali:
- Le regole di formattazione in formato String
- un varargs di argomenti da formattare
Le regole di formattazione
Le regole di formattazione sono formate da:
- una parte fissa di testo
- gli specifiers
La parte fissa del testo indica quale argomento deve essere preso in considerazione, ad esempio %1$ indica che la formattazione va applicata al primo argomento. Gli specifiers indicando le regole vere e proprie per la formattazione.
1 | String.format("%1$10s", "ciao") |
In questo caso si sta dicendo che la formattazione 10s deve far riferimento al primo argomento %1$ passato, ovvero “ciao”. L’output di tale formattazione sarà una stringa di 10 caratteri che contiene il primo argomento allineato a destra.
Riferimenti
Di seguito i riferimenti alla documentazione ufficiale dove potete vedere anche tutte le altre formattazioni che potete applicare.