Java: dividere una stringa

Quando si programma, succede spesso che i dati devono essere portati da una forma all'altra. Un esempio di questo è la suddivisione delle stringhe in sottoinsiemi individuali. La libreria standard Java fornisce la propria funzione per questo, che vorremmo presentarvi qui.

  • La funzione split
  • Espressioni regolari

La funzione split

La classe String fornisce una funzione per dividere una stringa in sottoinsiemi. La firma della funzione assomiglia a questa:

public String[] split(String regex)

Quindi la funzione si aspetta una Stringa come parametro di input e restituisce un array di Stringhe. Il parametro di input è un'espressione regolare che specifica dove la stringa dovrebbe essere divisa. Il seguente esempio aiuterà a spiegare:

Stringa numeri = "31-x-8-x-6-x-12-x-19-x-42";
Stringa[] split = numbers.split("-x-"); // [31, 8, 6, 12, 19, 42]

System.out.println(split[0]); // Restituisce "31"
System.out.println(split[1]); // Restituisce "8"

La stringa numbers contiene diversi numeri, che sono separati da un meno. La funzione membro split prende questo carattere come argomento e restituisce le singole sottostringhe esatte tra questi caratteri in un array. È importante qui che la stringa passata nell'argomento sia un'espressione regolare. Questo significa che se un metacarattere regolare deve essere trovato, deve essere preceduto da un doppio backslash ():

Stringa numeri = "31[-]8[-]6[-]12[-]19[-]42";
Stringa[] split = numeri.split("\[-\]"); // [31, 8, 6, 12, 19, 42]

Regex-Metacharacters sind ( )   { { ^ $ | ? * + . < > - = !

Espressioni regolari

Per le stringhe più complicate, è una buona idea usare le espressioni regolari nella funzione split. Anche se una stringa ha diversi tipi di stringhe tra le sottostringhe che state cercando, potete comunque identificare le sottostringhe senza problemi.

Stringa numbers = "31-=dq-8-ab-6-rt-12-xz-19-??-42";
Stringa[] split = numbers.split("-[^0-9]*-"); // [31, 8, 6, 12, 19, 42]

L'espressione regolare "-[^0-9]*-" trova tutte le stringhe che non sono numeri e sono racchiuse da due segni meno. Queste sono esattamente le stringhe alle quali i numeri di stringa dovrebbero essere separati. Le espressioni regolari possono spesso rendere la vostra vita più facile come programmatore, ma non sono sempre facili da mettere insieme. Se volete saperne di più sulle espressioni regolari, vi rimandiamo all'introduzione ufficiale alle espressioni regolari in Java. Puoi anche cercare il capitolo pertinente nell'Isola di Java.