"Cześć, Amigo!"

„O ile mi wiadomo, Rishi mówił ci już o wyrażeniach regularnych”.

– Tak, to było bardzo interesujące.

„Świetnie, teraz opowiem ci o używaniu wyrażeń regularnych do pracy z łańcuchami”.

„Zacznijmy od najprostszego pytania:”

1) Jak sprawdzić, czy łańcuch pasuje do wzorca określonego przez wyrażenie regularne?

„Istnieje do tego metoda dopasowań. Przekazujesz ciąg znaków zawierający wyrażenie regularne, a metoda zwraca prawdę lub fałsz”.

Metoda(y) Przykład(y)
boolean matches(String regex)
String s = "Good news, everyone!";
Boolean test = s.matches("news\\.*");
Wynik:

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

2) Jak zastąpić wszystkie pasujące podciągi różnymi ciągami?

„Są na to dwie metody”.

„ Metoda replaceAll zastępuje wszystkie wystąpienia podłańcucha innym ciągiem”.

„ Metoda replaceFirst zastępuje pierwsze wystąpienie przekazanego podciągu określonym ciągiem”.

Metoda(y) Przykład(y)
String replaceAll(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceAll ("e\\.","EX");
Wynik:

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

s2 == "Good nEXs, everyone!";

3) Jak podzielić łańcuch na części?

„W tym celu mamy metodę split, która przyjmuje maskę ograniczającą:”

Metoda(y) Przykład(y)
String[] split(String regex)
String s = "Good news everyone!";
String[] ss = s.split("ne");
System.out.println(Arrays.toString(ss));
Wynik (tablica trzech łańcuchów):

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

„ Klasa StringTokenizer to kolejny sposób na podzielenie łańcucha na części ”.

„Ta klasa nie używa wyrażeń regularnych. Zamiast tego po prostu przekazujesz String zawierający zestaw ograniczników. Zaletą tego podejścia jest to, że nie dzieli całego łańcucha na części na raz, zamiast tego powoli przechodzi od od początku do końca”.

„Klasa składa się z konstruktora i dwóch metod. Do konstruktora należy przekazać ciąg znaków, który rozdzielamy, wraz z ciągiem zawierającym zestaw znaków ograniczających”.

Metoda nextToken zwraca następny token (podciąg).

Metoda hasMoreTokens() zwraca wartość true, jeśli nadal istnieją podłańcuchy, które nie zostały jeszcze zwrócone.

Metoda(y) Przykład(y)
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);
}
Wyjście ekranu:

Good
ws
v
ryo
!

„Zauważ, że każdy znak w drugim łańcuchu przekazany do konstruktora StringTokenizer jest traktowany jako ogranicznik”.

„Po raz kolejny wszystko wydaje się jasne. Być może nie jestem w stanie od razu napisać tego kodu samodzielnie, ale rozumiem, co się tutaj dzieje”.

„Wspaniale, w takim razie założymy, że opanowałeś temat”.