Dzięki omawianym metodom zamiana wielkości liter nie stanowi żadnego problemu.
Zmiana wielkości liter przydaje się także przy przetwa-rzaniu identyfikatorów kont użytkowników. Zazwyczaj identyfikator użytkownika jest w bazie danych polem o wartościach z dowolnymi wielkościami znaków, w przeciwieństwie do hasła, w którym wielkość znaków ma ko-losalne znaczenie. Przy porównywaniu podanego przez MANIPULOWANIE CIĄGAMI
użytkownika identyfikatora z tym, który zapisany jest w bazie danych, najlepiej, aby oba porównywane ciągi zostały uprzednio skonwertowane na odpowiednią wielkość liter. Alternatywą byłoby zastosowanie metody equalsIgnoreCase() klasy String, która realizuje porównanie bez uwzględniania wielkości liter.
Usuwanie zbędnych spacji
z początku i końca ciągu
String result = str.trim();
Metoda trim() usuwa z ciągu zarówno początkowe, jak i końcowe spacje oraz inne znaki odstępów (ang. white-spaces) i zwraca „obrany” ciąg. Pierwotny ciąg pozostaje oczywiście niezmieniony. Jeśli w ciągu nie ma żadnych po-czątkowych ani końcowych znaków odstępu do usunięcia, 41
Przetwarzanie ciągu wyrazów oddzielanych przecinkami metoda zwraca po prostu pierwotny ciąg. Do znaków odstępów zaliczane są między innymi znaki spacji i ta-bulacji1.
ROZDZIAŁ 3
Przydaje się to bardzo przy porównywaniu ciągów wpro-wadzanych przez użytkownika na wejście programu z cią-
gami zaszytymi w programie albo odczytywanymi ze znanych źródeł. Programista często całymi godzinami ślęczy nad niedziałającym kodem tylko po to, by przekonać się, że to, co wprowadza, niedokładnie zgadza się z oczeki-waniami programu, a różnica polega np. na umieszcza-niu na wejściu niewinnej, początkowej spacji. Obcięcie zbędnych znaków odstępów eliminuje takie problemy.
Przetwarzanie ciągu wyrazów
oddzielanych przecinkami
MANIPULOWANIE CIĄGAMI
String str = "timothy,kerry,timmy,camden"; String[] results = str.split(",");
Metoda split() wywołana na rzecz obiektu klasy String przyjmuje w wywołaniu ciąg wyrażenia regularnego reprezentujący separator wyrazów ciągu i zwraca tablicę obiektów String wyłuskanych z ciągu źródłowego na 1 Ściśle mówiąc, do wycinanych znaków zaliczają się wszystkie znaki o kodach mniejszych od '\u0020', który to kod reprezentuje właśnie spację. Znak tabulacji ma kod '\u0007'; znak nowego wiersza to '\u0010'; znak '\u0013' to znak powrotu karetki itd. — przyp. tłum.
42
ROZDZIAŁ 3
Przetwarzanie ciągu wyrazów oddzielanych przecinkami podstawie wyrażenia regularnego separatora. Dzięki tej metodzie przetwarzanie ciągów oddzielanych przecinkami jest zupełnie proste. W tym przykładzie najzwyczajniej przekazujemy do metody split() ciąg separatora, a w odpowiedzi otrzymujemy tablicę ciągów zawierających wyrazy rozpoznane w ciągu źródłowym (str) pomiędzy przecinkami. Tablica powinna składać się z następujących elementów:
results[0] = timothy
results[1] = kerry
MANIPULOWANIE CIĄGAMI
results[2] = timmy
results[3] = camden
Inną klasą bardzo przydatną do wykonywania podziału ciągów jest klasa StringTokenizer. Wykorzystamy ją zamiast metody split() do powtórzenia ostatniego ćwiczenia:
String str = "timothy,kerry,timmy,camden"; StringTokenizer st = new StringTokenizer(str, ","); while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
Ten fragment programu powinien spowodować wypisanie na wyjściu następujących podciągów (każdy w osob-nym wierszu):
timothy
kerry
timmy
camden
43
Przetwarzanie ciągu wyrazów oddzielanych przecinkami Zauważ, że przecinki oddzielające wyrazy zostały pominięte i nie widać ich na wyjściu.
ROZDZIAŁ 3