X


Każdy jest innym i nikt sobą samym.

out.println("Ciągi są różne.");
}
Tym razem program powinien wypisać:
Ciągi są równe.
Inną metodą związaną z porównywaniem obiektów klasy String jest metoda compareTo(). Służy ona do leksyko-graficznego porównywania dwóch ciągów i zwraca nie MANIPULOWANIE CIĄGAMI
wartość logiczną, ale liczbową: dodatnią, ujemną albo zerową. Wartość 0 jest zwracana jedynie dla takich dwóch ciągów, dla których metoda equals() dałaby wartość true. Wartość ujemna wskazuje, że ciąg, na rzecz którego wywołano metodę, jest „pierwszy”, to znaczy alfabetycznie poprzedza drugi ciąg uczestniczący w porówna-niu, przekazany w wywołaniu metody. Z kolei wartość dodatnia oznacza, że ciąg, na rzecz którego wywołano metodę, jest alfabetycznie za ciągiem przekazanym w wy-wołaniu. Gwoli ścisłości, porównanie odbywa się na bazie wartości Unicode poszczególnych, odpowiadających sobie 34
ROZDZIAŁ 3
Wyszukiwanie i wyłuskiwanie podciągów
znaków porównywanych ciągów. Metoda compareTo() ma również swój odpowiednik ignorujący wielkość liter —
compareToIgnoreCase(). Działa on tak samo, tyle że przy porównywaniu znaków nie uwzględnia wielkości liter. Spójrzmy na następny przykład:
String name1 = "Kowalski";
String name2 = "Nowak";
int result = name1.compareTo(name2);
if (result == 0) {
System.out.println("Nazwiska są identyczne.");
}
MANIPULOWANIE CIĄGAMI
else if (result > 0) {
System.out.println("Nazwisko name1 jest
åalfabetycznie pierwsze.");
}
else if (result < 0) {
System.out.println("Nazwisko name1 jest
åalfabetycznie drugie.");
}
W przypadku tego programu powinniśmy otrzymać na wyjściu taki komunikat:
Nazwisko name1 jest alfabetycznie drugie.
Wyszukiwanie i wyłuskiwanie
podciągów
int result = string1.indexOf(string2);
int result = string1.indexOf(string2, 5);
Wywołanie pierwszej z powyższych metod powinno umie-
ścić w zmiennej result indeks pierwszego wystąpienia 35
Wyszukiwanie i wyłuskiwanie podciągów podciągu string2 w ciągu string1. Jeśli w ciągu string1
nie ma ciągu string2, metoda zwróci wartość -1.
ROZDZIAŁ 3
W drugiej z powyższych metod wartość zwracana będzie zawierać indeks pierwszego wystąpienia podciągu string2
w ciągu string1, ale za piątym znakiem w string1.
Wartością drugiego argumentu może być dowolna liczba większa od zera. Jeśli będzie większa od długości przeszukiwanego ciągu, metoda zwróci -1.
Oprócz wyszukiwania podciągu w ciągu trzeba czasem dowiedzieć się, gdzie znajduje się interesujący nas podciąg, i przy okazji wyłuskać go z przeszukiwanego ciągu.
Jak dotąd umiemy jedynie zlokalizować potrzebny podciąg w ciągu. Kiedy ustalisz jego indeks, możesz go wyłuskać za pomocą metody substring() klasy String.
Metoda substring() jest przeciążona, co oznacza, że można ją wywoływać na kilka sposobów. Jeden z nich polega na przekazaniu indeksu podciągu do wyłuskania.
MANIPULOWANIE CIĄGAMI
W tej wersji metoda zwraca podciąg zaczynający się od wskazanego znaku i rozciągający się aż do końca ciągu źródłowego. Kolejny sposób to wywołanie substring() z dwoma argumentami: indeksem początku i indeksem końca ciągu.
String string1 = "Mój adres to Polna 33"; String address = string1.substring(13);
System.out.println(address);
W przypadku takiego programu powinniśmy otrzymać na wyjściu napis:
Polna 33
36
ROZDZIAŁ 3
Przetwarzanie ciągu znak po znaku
Na 13. pozycji w ciągu string1 znajduje się P; to jest początek naszego podciągu. Zauważ, że ciągi znaków są zawsze indeksowane od zera, a ostatni znak ciągu znajduje się pod indeksem -1 (koniec ciągu).
Przetwarzanie ciągu
znak po znaku
MANIPULOWANIE CIĄGAMI
for (int index = 0; index < string1.length(); index++) {
char aChar = string1.charAt(index);
}
Metoda charAt() pozwala na pozyskanie pojedynczego znaku wyłuskanego z ciągu spod wskazanej pozycji. Znaki są indeksowane w ciągu od zera, to znaczy mają numery od 0 do liczby równej długości ciągu zmniejszonej o jeden.
Powyższa pętla przetwarza kolejne znaki ciągu string1.

Drogi użytkowniku!

W trosce o komfort korzystania z naszego serwisu chcemy dostarczać Ci coraz lepsze usługi. By móc to robić prosimy, abyś wyraził zgodę na dopasowanie treści marketingowych do Twoich zachowań w serwisie. Zgoda ta pozwoli nam częściowo finansować rozwój świadczonych usług.

Pamiętaj, że dbamy o Twoją prywatność. Nie zwiększamy zakresu naszych uprawnień bez Twojej zgody. Zadbamy również o bezpieczeństwo Twoich danych. Wyrażoną zgodę możesz cofnąć w każdej chwili.

 Tak, zgadzam się na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerów w celu dopasowania treści do moich potrzeb. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

 Tak, zgadzam się na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerów w celu personalizowania wyświetlanych mi reklam i dostosowania do mnie prezentowanych treści marketingowych. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

Wyrażenie powyższych zgód jest dobrowolne i możesz je w dowolnym momencie wycofać poprzez opcję: "Twoje zgody", dostępnej w prawym, dolnym rogu strony lub poprzez usunięcie "cookies" w swojej przeglądarce dla powyżej strony, z tym, że wycofanie zgody nie będzie miało wpływu na zgodność z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.