Grazie al metodo split() della classe String di Java è possibile suddividere una stringa in base ad una espressione regolare. facciamo un esempio e supponiamo di vorel dividere una stringa in base alle virgole:
String amici = "Mario,Luca,Claudio";
String[] nomi = amici.split("-");
String nome1 = nomi[0]; // Mario
String nome2 = nomi[1]; // Luca
String nome3 = nomi[2]; // Claudio
Come avrete notato il metodo split() ha diviso lo stringa e restituito un array di valori.
Prima di utilizzare il metodo split() è buona norma verificare che la stringa contenga effettivamente il separatore. Tornando al nostro esempio:
String amici = "Mario,Luca,Claudio";
if (amici.contains(",")) {
String[] nomi = amici.split(",");
// ...
// ...
// ...
} else {
throw new IllegalArgumentException("La stringa " + amici + " non contiene virgole");
}
Attenzione ai metacaratteri!
Si noti che nel nostro esempio abbiamo utilizzato la virgola come separatore per la suddivisione della stringa quindi non abbiamo dovuto usare cautele particolari. Ma se avessimo voluto, ad esempio, suddividere una stringa in base al punto o al simblo del dollaro? In questi casi avremmo dovuto stare attenti… i caratteri citati (come alcuni altri) hanno un significato particolare nelle espressioni regolari, quindi avremmo dovuto effettuare un preventivo escape oppure filtrarli in questo modo:
String amici = "Mario.Luca.Claudio";
String[] nomi = amici.split(Pattern.quote("."));
I meta-caratteri che necessitano di questa attenzione sono 12, cioè:
- .
- $
- \
- ^
- *
- |
- ?
- +
- (
- )
- [
- {