"Bună, Amigo!"

„Din câte știu eu, Rishi ți-a spus deja despre expresiile obișnuite.”

— Da, a fost foarte interesant.

„Genial, acum vă voi spune despre utilizarea expresiilor regulate pentru a lucra cu Strings.”

„Să începem cu cea mai simplă întrebare:”

1) Cum verific pentru a vedea dacă un șir se potrivește cu modelul specificat de o expresie regulată?

"Există o metodă de potrivire pentru aceasta. Treci un String care conține o expresie regulată, iar metoda returnează adevărat sau fals."

Metoda(e) Exemplu(e)
boolean matches(String regex)
String s = "Good news, everyone!";
Boolean test = s.matches("news\\.*");
Rezultat:

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

2) Cum înlocuiesc toate subșirurile care se potrivesc cu șiruri diferite?

„Există două metode pentru asta”.

" Metoda replaceAll înlocuiește toate aparițiile unui subșir cu un alt șir."

" Metoda replaceFirst înlocuiește prima apariție a unui subșir trecut cu un șir specificat."

Metoda(e) Exemplu(e)
String replaceAll(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceAll ("e\\.","EX");
Rezultat:

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

s2 == "Good nEXs, everyone!";

3) Cum împart un șir în părți?

„Pentru aceasta, avem metoda split, care necesită o mască de delimitare:”

Metoda(e) Exemplu(e)
String[] split(String regex)
String s = "Good news everyone!";
String[] ss = s.split("ne");
System.out.println(Arrays.toString(ss));
Rezultat (o matrice de trei șiruri de caractere):

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

„ Clasa StringTokenizer este o altă modalitate de a împărți un șir în părți .”

„Această clasă nu folosește expresii regulate. În schimb, pur și simplu treceți un String care conține un set de delimitatori. Avantajul acestei abordări este că nu rupe întregul șir în bucăți dintr-o dată, ci se mișcă încet de la de la început până la sfârșit”.

„Clasa constă dintr-un constructor și două metode. Trebuie să treceți șirul pe care îl despărțim în constructor, împreună cu un șir care conține setul de caractere delimitare.”

Metoda nextToken returnează următorul token (subșir).

Metoda hasMoreTokens() returnează true dacă există încă subșiruri care nu au fost returnate încă.

Metoda(e) Exemplu(e)
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);
}
Ieșire ecran:

Good
ws
v
ryo
!

„Rețineți că orice caracter din al doilea șir transmis constructorului StringTokenizer este tratat ca un delimitator.”

"Încă o dată, totul pare clar. S-ar putea să nu pot scrie acest cod de unul singur imediat, dar înțeleg ce se întâmplă aici."

„Excelent, atunci vom presupune că ai stăpânit subiectul”.