Riempi una stringa con zeri o spazi in Java

1. Panoramica

In questo breve tutorial, vedremo come riempire una stringa in Java. Ci concentreremo principalmente su un pad sinistro, il che significa che aggiungeremo gli spazi o gli zeri iniziali fino a raggiungere la lunghezza desiderata.

L'approccio per la stringa imbottita destra è molto simile, quindi indicheremo solo le differenze.

2. Riempire una stringa utilizzando metodi personalizzati

La classe String in Java non fornisce un metodo conveniente per il riempimento, quindi creiamo diversi metodi da soli. Per prima cosa, però, stabiliamo alcune aspettative:

assertEquals(" 123456", padLeftZeros("123456", 10)); assertEquals("0000123456", padLeftZeros("123456", 10));

2.1. Utilizzando StringBuilder

Possiamo ottenere questo risultato con StringBuilder e una logica procedurale:

public String padLeftZeros(String inputString, int length) { if (inputString.length() >= length) { return inputString; } StringBuilder sb = new StringBuilder(); while (sb.length() < length - inputString.length()) { sb.append('0'); } sb.append(inputString); return sb.toString(); }

Possiamo vedere qui che se la lunghezza del testo originale è uguale o maggiore della lunghezza desiderata, ne restituiamo la versione invariata. Altrimenti, creiamo una nuova stringa, iniziando con spazi e aggiungendo quella originale.

Ovviamente, se volessimo riempire con un carattere diverso potremmo semplicemente usarlo al posto di uno 0 .

Allo stesso modo, se vogliamo il pad destro, dobbiamo solo fare un nuovo StringBuilder (inputString) e quindi aggiungere gli spazi alla fine.

2.2. Utilizzo della sottostringa

Un altro modo per eseguire il riempimento a sinistra è creare una stringa con la lunghezza desiderata che contiene solo caratteri pad e quindi utilizzare il metodo substring () :

StringBuilder sb = new StringBuilder(); for (int i = 0; i < length; i++) { sb.append(' '); } return sb.substring(inputString.length()) + inputString;

2.3. Utilizzando String.format

E, infine, da Java 5, possiamo usare String .format () :

return String.format("%1$" + length + "s", inputString).replace(' ', '0');

Dobbiamo notare che per impostazione predefinita l'operazione di riempimento verrà eseguita utilizzando gli spazi. Questo è il motivo per cui dobbiamo usare il metodo replace () se vogliamo riempire con zeri o qualsiasi altro carattere.

Per il pad giusto, dobbiamo solo usare un flag diverso: % 1 $ -

3. Riempi una stringa usando le librerie

E ci sono librerie esterne che già offrono funzionalità di riempimento.

3.1. Apache Commons Lang

Apache Commons Lang fornisce un pacchetto di classi di utilità Java. Uno dei più popolari è StringUtils .

Per usarlo, dovremo includerlo nel nostro progetto aggiungendo la sua dipendenza al nostro file pom.xml :

 org.apache.commons commons-lang3 3.8.1 

E poi passiamo inputString e length , proprio come i metodi che abbiamo creato. Possiamo anche passare il carattere di riempimento:

assertEquals(" 123456", StringUtils.leftPad("123456", 10)); assertEquals("0000123456", StringUtils.leftPad("123456", 10, "0"));

Di nuovo, la stringa verrà riempita di spazi per impostazione predefinita o è necessario impostare esplicitamente un altro carattere di riempimento.

Esistono anche metodi rightPad () corrispondenti .

Per esplorare altre funzionalità di Apache Commons Lang 3, puoi consultare il nostro tutorial introduttivo. Se desideri vedere altri modi di manipolare le stringhe usando la classe StringUtils , fai riferimento a questo articolo .

3.2. Google Guava

Un'altra libreria che possiamo usare è Guava di Google. Ovviamente, dobbiamo prima aggiungerlo al progetto aggiungendo la sua dipendenza:

 com.google.guava guava 27.0-jre 

E poi usa la classe Strings :

assertEquals(" 123456", Strings.padStart("123456", 10, ' ')); assertEquals("0000123456", Strings.padStart("123456", 10, '0'));

Non esiste un carattere di riempimento predefinito in questo metodo, quindi è necessario passarlo ogni volta.

Per il pad destro, possiamo usare il metodo padEnd () .

La libreria Guava offre molte più funzionalità e ne abbiamo trattate molte. Puoi cercare qui gli articoli relativi a Guava .

4. Conclusione

In questo rapido articolo, abbiamo illustrato come possiamo riempire una stringa in Java. Abbiamo presentato esempi utilizzando le nostre implementazioni o librerie esistenti.

Come al solito, un codice sorgente completo può essere trovato su GitHub.