Ricerca in una Stringa in Java
- La classe
String
in Java fornisce metodi per cercare caratteri e sottostringhe. - I metodi
indexOf()
elastIndexOf()
permettono di trovare la prima o l'ultima occorrenza di un carattere o una sottostringa. - È possibile specificare un indice di partenza per la ricerca.
Ricerca all'interno di una Stringa
La classe String
fornisce due metodi che permettono di cercare in una stringa un carattere o una sotto-stringa specificata:
indexOf()
Cerca la prima occorrenza di un carattere o sotto-stringa.lastIndexOf()
Cerca l'ultima occorrenza di un carattere o sotto-stringa.
Questi due metodi sono sovraccaricati in diversi modi. In tutti i casi, i metodi restituiscono l'indice al quale il carattere o la sotto-stringa è stata trovata, o –1 in caso di fallimento.
Per cercare la prima occorrenza di un carattere, bisogna utilizzare:
int indexOf(int ch)
Per cercare l'ultima occorrenza di un carattere, bisogna invece utilizzare:
int lastIndexOf(int ch)
Qui, ch
è il carattere che si sta cercando.
Per cercare la prima o ultima occorrenza di una sottostringa, utilizzare
int indexOf(String str)
int lastIndexOf(String str)
Qui, str
specifica la sottostringa.
È possibile specificare un punto di partenza per la ricerca utilizzando queste forme:
int indexOf(int ch, int indiceInizio)
int lastIndexOf(int ch, int indiceInizio)
int indexOf(String str, int indiceInizio)
int lastIndexOf(String str, int indiceInizio)
Qui, indiceInizio
specifica l'indice al quale inizia la ricerca. Per indexOf()
, la ricerca va da indiceInizio
alla fine della stringa. Per lastIndexOf()
, la ricerca va da indiceInizio
a zero.
L'esempio seguente mostra come utilizzare i vari metodi di indice per cercare all'interno di una String
:
// Dimostra indexOf() e lastIndexOf().
class dimostrazioneDiIndexOf {
public static void main(String[] args) {
String s = "Nel mezzo del cammin di nostra vita" +
"mi ritrovai per una selva oscura" +
"che la diritta via era smarrita." +
"Ahi quanto a dir qual era è cosa dura" +
"esta selva selvaggia e aspra e forte" +
"che nel pensier rinova la paura!" +
"Tant' è amara che poco è più morte;" +
"ma per trattar del ben ch'i' vi trovai," +
"dirò de l'altre cose ch'i' v'ho scorte." +
"Io non so ben ridir com' i' v'intrai," +
"tant' era pien di sonno a quel punto" +
"che la verace via abbandonai." +
"Ma poi ch'i' fui al piè d'un colle giunto," +
"là dove terminava quella valle" +
"che m'avea di paura il cor compunto," +
"guardai in alto e vidi le sue spalle" +
"vestite già de' raggi del pianeta" +
"che mena dritto altrui per ogni calle.";
System.out.println("indexOf(t) = " +
s.indexOf('t'));
System.out.println("lastIndexOf(t) = " +
s.lastIndexOf('t'));
System.out.println("indexOf(selva) = " +
s.indexOf("selva"));
System.out.println("lastIndexOf(selva) = " +
s.lastIndexOf("selva"));
System.out.println("indexOf(t, 10) = " +
s.indexOf('t', 10));
System.out.println("lastIndexOf(t, 60) = " +
s.lastIndexOf('t', 60));
System.out.println("indexOf(selva, 10) = " +
s.indexOf("selva", 10));
System.out.println("lastIndexOf(selva, 60) = " +
s.lastIndexOf("selva", 60));
}
}
Ecco l'output di questo programma:
indexOf(t) = 27
lastIndexOf(t) = 614
indexOf(selva) = 55
lastIndexOf(selva) = 147
indexOf(t, 10) = 27
lastIndexOf(t, 60) = 40
indexOf(selva, 10) = 55
lastIndexOf(selva, 60) = 55