Home / Programmazione / Java / Split e indexOf in Java
Mattepuffo

Split e indexOf in Java

Split e indexOf in Java

Split e indexOf sono due metodi della classe String molto utili.

Split serve per spezzare la stringa nel punto che corrisponde alla regex passatagli come argomento (ad esempio "-" spezza la stringa nei punto dove incontra il trattino); il risultato è un array di stringhe.

indexOf ricerca nella stringa ciò che gli viene passato come argomento; se no trova nessna corrispondenza ritorna -1.

E' possibile dargli anche un secondo parametro sotto forma di intero che indica da dove deve partire la ricerca.

Vediamo come usare questi due metodi per estrapolare solo ciò che ci serve da una stringa.

Prendiamo come esempio questa stringa: "parola1 parola-2 parola-3 parola-4 parola5".

Voglio estrapolare solo le parole che non hanno il trattino.

Prima di tutto usiamo split per spezzare la stringa in corrispondenza degli spazi, ottenendo così un array di tutte le parole.

Scorriamo poi questo array cercando tutte le parole che hanno il trattino e stampiamo quelle che non ce l'hanno:

public class Main {

public static void main(String[] args) {
String parole = "parola1 parola-2 parola-3 parola-4 parola5";
String[] estrazione = null;
estrazione = parole.split(" ");
for (int i = 0; i < estrazione.length; i++) {
if (estrazione[i].indexOf("-") == -1) {
System.out.println(estrazione[i]);
}
}
}
}

In pratica:

  • spezziamo parole con split
  • slaviamo il tutto nell'array estrazione
  • scorriamo estrazione
  • usiamo un if per vedere tutte le occorrenze di estrazione che non hanno il trattino
  • stampiamo il tutto

Provate a cambiare la condizione dell'if con != -1 per vedere come cambia il risultato.

 

EDIT

Vediamo come potete eseguire lo split nel caso in cui volete suddividere nel punto (.) o dove c'è il back-slash (\).

Split nel punto:

public class prove {

public static void main(String[] args) {
String formato = null;
String ext = "bsdfdf.gif";
String[] tmp = ext.split("\\.");
for (int i = 0; i < tmp.length; i++) {
formato = tmp[i];
}
System.out.println(formato);
}
}

Split nel back-slash:

public class prove {

public static void main(String[] args) {
String formato = null;
String ext = "bsdfdf.gif";
String[] tmp = ext.split("\\\\");
for (int i = 0; i < tmp.length; i++) {
formato = tmp[i];
}
System.out.println(formato);
}
}

Questo perchè sia il punto che \ sono caratteri speciali.