Il metodo Java String split() è utile per sud­di­vi­de­re le stringhe in varie sot­to­strin­ghe. Durante questa ope­ra­zio­ne si specifica un parametro che agisce da se­pa­ra­to­re e uno (opzionale) che regola il numero di sot­to­strin­ghe. Di seguito ti spie­ghia­mo come funziona questo metodo e ti il­lu­stria­mo alcuni aspetti da tenere in con­si­de­ra­zio­ne.

Cos’è il metodo Java String split()?

Una stringa Java è un oggetto che rap­pre­sen­ta più caratteri, numeri o caratteri speciali. Esiste nella classe java.lang e viene creata e mo­di­fi­ca­ta mediante la classe String. Con questo lin­guag­gio di pro­gram­ma­zio­ne hai la pos­si­bi­li­tà di sud­di­vi­de­re queste stringhe in più sot­to­strin­ghe. Il metodo Java String split() si usa per estrarre de­ter­mi­na­te porzioni di un’intera stringa o per sud­di­vi­der­la in singole parti. Ti mostriamo le diverse opzioni a tua di­spo­si­zio­ne.

Usando il metodo Java String split() si ottiene un array composto da più stringhe. Questo viene definito valore di ritorno.

Web Hosting
Diventa il n°1 della rete con il provider di hosting n°1 in Europa
  • Di­spo­ni­bi­li­tà garantita al 99,99%
  • Dominio, SSL ed e-mail inclusi
  • As­si­sten­za 24/7 in lingua italiana

Sintassi e fun­zio­na­men­to del metodo

So­stan­zial­men­te la sintassi del metodo Java String split() è molto semplice e, se ne­ces­sa­rio, può essere com­ple­ta­ta con un parametro. La variante di base è la seguente:

String[] split(String regex)
java

L’output ci mostra che il valore di ritorno è un array. String è l’oggetto della stringa. Il parametro regex è un input uti­liz­za­to per indicare i punti in cui la stringa dovrà essere suddivisa. I parametri non devono essere usati ne­ces­sa­ria­men­te, ma sono sempre con­si­glia­ti. Con il parametro opzionale limit il codice avrà questa sintassi:

String[] split(String regex, int limit)
java

limit specifica quante sot­to­strin­ghe andranno create. Il suo valore è un numero intero. Se questo è negativo o pari a zero, l’output vi­sua­liz­za tutte le sot­to­strin­ghe. Se invece si sceglie un valore positivo, le sot­to­strin­ghe vi­sua­liz­za­te cor­ri­spon­de­ran­no a quel numero.

Esempio di metodo con spazi e trattini

Per capire meglio come funziona Java String split() vediamo da vicino un esempio pratico. A questo scopo, creiamo una stringa composta da quattro parole: “Questo è un esempio”. Ora usiamo il metodo split() per sud­di­vi­de­re la stringa. Il modo più logico è quello di dividerla in base agli spazi tra una parola e l’altra. Per sud­di­vi­de­re la stringa puoi usare il seguente codice:

public class Main {
	public static void main(String[] args) {
		String x = "Questo è un esempio";
		String[] risultato = x.split(" ");
		for (String y : risultato) {
			System.out.println(y);
		}
	}
}
java

A questo scopo viene iniziata solo una variabile di String x. Suc­ces­si­va­men­te, Java usa il metodo String split() su x. Il parametro regex cerca gli spazi all’interno della stringa e la divide in quei punti. Il risultato viene quindi salvato in un array de­no­mi­na­to “risultato”. Queste sot­to­strin­ghe vengono eseguite con il ciclo for. Con l’aiuto del comando Java System.out.println si ottiene il seguente output:

Questo
è
un
esempio
java

Virgola come elemento di se­pa­ra­zio­ne: con e senza spazio

Puoi usare questo metodo anche per separare elenchi divisi da una virgola e salvati come stringa. Tuttavia, occorre adottare un piccolo ac­cor­gi­men­to in grado di mostrare di­ret­ta­men­te come vengono messe in pratica le istru­zio­ni. Con­si­de­ria­mo un elenco dei giorni della settimana, ciascuno separato da virgole. Queste virgole rap­pre­sen­ta­no un buon parametro da uti­liz­za­re per regex. Usandolo, il codice si scrive così:

public class Main {
	public static void main(String[] args) {
		String x = "lunedì, martedì, mercoledì, giovedì, venerdì, sabato, domenica";
		String[] risultato = x.split(",");
		for (String y : risultato) {
			System.out.println(y);
		}
	}
}
java

Ma in questo caso il risultato non sarà proprio ideale:

lunedì
 martedì
 mercoledì
 giovedì
 venerdì
 sabato
 domenica
java

Infatti, otteniamo un elenco ordinato, ma notiamo che tutti i valori da “martedì” in poi sono preceduti da uno spazio. Questo succede perché la divisione viene eseguita di­ret­ta­men­te dopo la virgola cor­ri­spon­den­te e Java String split() include lo spazio come prima posizione nella relativa sot­to­strin­ga. È possibile risolvere questo piccolo problema sem­pli­ce­men­te mo­di­fi­can­do il parametro, ovvero ag­giun­gen­do uno spazio sup­ple­men­ta­re come se­pa­ra­to­re. Lo snippet di codice sarà il seguente:

public class Main {
	public static void main(String[] args) {
		String x = "lunedì, martedì, mercoledì, giovedì, venerdì, sabato, domenica";
		String[] risultato = x.split(", ");
		for (String y : risultato) {
			System.out.println(y);
		}
	}
}
java

Ora l’output risulta molto più ordinato:

lunedì
martedì
mercoledì
giovedì
venerdì
sabato
domenica
java

Sud­di­vi­de­re le sequenze di numeri

Nel caso di lunghe sequenze di numeri esiste un altro modo per sud­di­vi­de­re la stringa. In questo contesto im­ma­gi­nia­mo una lunga sequenza di numeri divisa da punti e da due punti. Ora, se de­si­de­ria­mo elencare se­pa­ra­ta­men­te i numeri dopo i due punti, dovremo digitare il seguente snippet di codice:

public class Main {
	public static void main(String[] args) {
		String x = "194.518.552.1.17:6339";
		String[] risultato = x.split(":");
		for (String y : risultato) {
			System.out.println(y);
		}
	}
}
java

L’output sarà il seguente:

194.518.552.1.17
6339
java

Il metodo Java String split() con il parametro limit

Come già accennato, Java String split() conosce anche il parametro opzionale limit. Questo limita il numero di sot­to­strin­ghe create con il metodo. In questo caso ci sono tre pos­si­bi­li­tà: un valore inferiore a 0, un valore uguale a 0 e un valore superiore a 0.

limit inferiore a 0

Se as­se­gnia­mo al parametro limit un valore più piccolo di 0, l’espres­sio­ne regolare sarà applicata su tutta la sequenza di caratteri. L’array che si crea può avere una lunghezza variabile. Questo il codice:

public class Main {
	public static void main(String[] args) {
		String x = "lunedì, martedì, mercoledì, giovedì, venerdì, sabato, domenica ";
		String[] risultato = x.split(", ", -3);
		for (String y : risultato) {
			System.out.println(y);
		}
	}
}
java

Poiché dopo il termine “domenica” c’è ancora uno spazio, in questo caso l’array termina con una stringa vuota. Questo l’output:

lunedì
martedì
mercoledì
giovedì
venerdì
sabato
domenica
java

limit 0

As­se­gnan­do il valore 0 al parametro limit, l’espres­sio­ne regolare viene ripetuta con­ti­nua­ti­va­men­te. Neanche la lunghezza dell’array è limitata. Se l’ultimo elemento cor­ri­spon­de a una stringa vuota, questa non viene tenuta in con­si­de­ra­zio­ne per l’array finale.

public class Main {
	public static void main(String[] args) {
		String x = "lunedì, martedì, mercoledì, giovedì, venerdì, sabato, domenica ";
		String[] risultato = x.split(", ", 0);
		for (String y : risultato) {
			System.out.println(y);
		}
	}
}
java

L’output è identico, ma l’ultima stringa viene eliminata;

lunedì
martedì
mercoledì
giovedì
venerdì
sabato
domenica
java

limit superiore a 0

Il risultato è molto dif­fe­ren­te se as­se­gnia­mo a limit un valore superiore a 0. Questo determina il numero di sot­to­strin­ghe dell’output. Nel nostro esempio, il codice è il seguente:

public class Main {
	public static void main(String[] args) {
		String x = "lunedì, martedì, mercoledì, giovedì, venerdì, sabato, domenica ";
		String[] risultato = x.split(", ", 3);
		for (String y : risultato) {
			System.out.println(y);
		}
	}
}
java

In questo caso l’output è chia­ra­men­te diverso rispetto ai due esempi pre­ce­den­ti:

lunedì
martedì
mercoledì, giovedì, venerdì, sabato, domenica
java
Vai al menu prin­ci­pa­le