„Sprawdź inne rzeczy, które możesz zrobić z podciągami:”

8) Jak znaleźć podciąg?

Metody indexOf i lastIndexOf umożliwiają wyszukiwanie ciągów w ciągach. Istnieją 4 wersje tych metod:

Metoda indexOf szuka ciągu w określonym ciągu. Metoda może wyszukiwać ciąg od początku podanego ciągu lub od jakiegoś indeksu (druga metoda). Jeśli łańcuch zostanie znaleziony, metoda zwraca indeks jego pierwszego znaku; jeśli nie zostanie znaleziony, zwraca -1.

Metoda(y) Przykład(y)
int indexOf(String str)
String s = "Good news, everyone!";
int index = s.indexOf ("ne");
Wynik:

index == 5
int indexOf(String str, int from)
String s = "Good news, everyone!";
int index = s.indexOf ("ne", 7);
Wynik:

index == 16

„ Metoda lastIndexOf wyszukuje określony ciąg znaków wstecz od końca naszego ciągu znaków! Ta metoda może szukać ciągu znaków od samego końca naszego ciągu znaków lub zaczynając od jakiegoś indeksu (druga metoda). Jeśli łańcuch znaków zostanie znaleziony, to metoda zwraca indeks swojego pierwszego znaku; jeśli nie zostanie znaleziony, zwraca -1."

Metoda(y) Przykład(y)
int lastIndexOf(String str)
String s = "Good news, everyone!";
int index = s.lastIndexOf("ne");
Wynik:

index == 17
int lastIndexOf(String str, int from)
String s = "Good news, everyone!";
int index = s.lastIndexOf("ne", 15);
Wynik:

index == 5

9) Jak zamienić część ciągu na inny ciąg?

„Są na to trzy metody”.

Metoda replace zastępuje wszystkie wystąpienia określonego znaku innym znakiem.

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 replace(char oldChar, char newChar)
String s = "Good news, everyone!";
String s2 = s.replace>('o', 'a');
Wynik:

s2 == "Gaad news, everyane!";
String replaceAll(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceAll ("ne", "_");
Wynik:

s2 == "Good _ws, everyo_!";
String replaceFirst(String regex, String replacement)
String s = "Good news, everyone!";
String s2 = s.replaceFirst ("ne", "_");
Wynik:

s2 == "Good _ws everyone!";

„Ale trzeba z nimi uważać. W dwóch ostatnich metodach ( replaceAll i replaceFirst ) ciąg, którego szukamy, jest przekazywany jako wyrażenie regularne, a nie zwykły ciąg znaków. Ale o tym opowiem później”.