"Ciao, Amico!"

"Per quanto ne so, Rishi ti ha già parlato delle espressioni regolari."

"Sì, è stato molto interessante."

"Fantastico, ora ti parlerò dell'uso delle espressioni regolari per lavorare con le stringhe."

"Iniziamo con la domanda più semplice:"

1) Come posso verificare se una stringa corrisponde al modello specificato da un'espressione regolare?

"Esiste un metodo di corrispondenza per questo. Si passa una stringa contenente un'espressione regolare e il metodo restituisce true o false."

Metodo(i) Esempi
boolean matches(String regex)
String s = "Good news, everyone!";
Boolean test = s.matches("news\\.*");
Risultato:

false (the String doesn't start with "news")

2) Come posso sostituire tutte le sottostringhe corrispondenti con stringhe diverse?

"Ci sono due metodi per questo."

"Il metodo replaceAll sostituisce tutte le occorrenze di una sottostringa con un'altra stringa."

"Il metodo replaceFirst sostituisce la prima occorrenza di una sottostringa passata con una stringa specificata."

Metodo(i) Esempi
String replaceAll(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceAll ("e\\.","EX");
Risultato:

s2 == "Good nEXs EXEXyonEX";
String replaceFirst(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceFirst("e\\.","EX");
Risultato:

s2 == "Good nEXs, everyone!";

3) Come divido una stringa in parti?

"Per questo, abbiamo il metodo split, che accetta una maschera di delimitazione:"

Metodo(i) Esempi
String[] split(String regex)
String s = "Good news everyone!";
String[] ss = s.split("ne");
System.out.println(Arrays.toString(ss));
Risultato (un array di tre stringhe):

[Good , ws everyo, !]
"Good ", "ws everyo", "!";

"La classe StringTokenizer è un altro modo per dividere una stringa in parti ."

"Questa classe non usa espressioni regolari. Invece, passi semplicemente una stringa contenente un insieme di delimitatori. Il vantaggio di questo approccio è che non rompe l'intera stringa in pezzi tutti in una volta, invece si sposta lentamente da dall'inizio alla fine."

"La classe è composta da un costruttore e due metodi. Devi passare la stringa che stiamo suddividendo nel costruttore, insieme a una stringa contenente l'insieme di caratteri di delimitazione."

Il metodo nextToken restituisce il token successivo (sottostringa).

Il metodo hasMoreTokens() restituisce true se ci sono ancora sottostringhe che non sono state ancora restituite.

Metodo(i) Esempi
boolean hasMoreTokens()

String nextToken()
String s = "Good news, everyone!";

StringTokenizer tokenizer =
new StringTokenizer(s,"ne");
while (tokenizer.hasMoreTokens())
{
String token = tokenizer.nextToken();
System.out.println(token);
}
Uscita sullo schermo:

Good
ws
v
ryo
!

"Si noti che qualsiasi carattere nella seconda stringa passata al costruttore StringTokenizer viene trattato come delimitatore."

"Ancora una volta, tutto sembra chiaro. Potrei non essere in grado di scrivere questo codice da solo subito, ma capisco cosa sta succedendo qui."

"Eccellente, allora supponiamo che tu abbia imparato l'argomento."