Pisząc aplikacje spotykamy się z problemem podziału łańcucha tekstowego na części (np. import danych w formacie CSV, rozbicie zdania na wyrazy itd.). Idealną klasą, która pomoże nam podzielić łańcuch tekstowy jest klasa
StringTokenizer z pakietu
java.util. Jej zadaniem jest podział tekstu na części (tak zwane tokeny) na podstawie znaków rozdzielających (
ang. delimiter). Klasa posiada trzy konstruktory, oraz kilka metod umożliwiających pobranie podzielonych już tokenów. Poniższy przykład wykorzystuje konstruktor
StringTokenizer(String), dzielący łańcuchy tekstowe na podstawie znaku spacji, tabulacji, nowego wiersza i powrotu karetki. Znaki rozdzielające nie są traktowane jako tokeny.
// wykorzystujemy klasę Scanner oraz StringTokenizer z pakietu java.util
import java.util.*;
/**
* Podział łańcucha tekstowego na części
* @author kodatnik.blogspot.com
*/
public class PodzialLancucha {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print ("Podaj łańcuch: ");
// pobieramy od użytkownika łańcuch tekstowy
String lancuch = sc.nextLine();
// tworzymy nowy obiekt klasy StringTokenizer
StringTokenizer st = new StringTokenizer(lancuch);
// metoda countTokens() zwróci nam liczbę tokenów (części)
int liczbaTokenow = st.countTokens();
// wyświetlamy na ekranie informacje o liczbie tokenów
System.out.println("Liczba tokenów w łańcuchu: " + liczbaTokenow);
// w pętli dopóki są jeszcze tokeny (metoda hasMoreTokens())
while(st.hasMoreTokens()) {
//wyświetlamy je na ekranie (metoda nextToken())
System.out.println(st.nextToken());
}
}
}
Uruchomiona aplikacja:
Podaj łańcuch: Nie programuj w wigilię... bug się rodzi
Liczba tokenów w łańcuchu: 7
Nie
programuj
w
wigilię...
bug
się
rodzi
Drugi konstruktor
StringTokenizer(String, String) umożliwia nam określenie własnych znaków rozdzielających. Możemy na przykład użyć przecinka czy też średnika do podziału linii z pliku CSV. Znaki rozdzielające również nie są traktowane jako tokeny.
StringTokenizer st = new StringTokenizer(lancuch, ";");
Wynik działania programu:
Podaj łańcuch: Kasia;Fikas;ul. Marsowa 12;Katowice
Liczba tokenów w łańcuchu: 4
Kasia
Fikas
ul. Marsowa 12
Katowice
Ostatnie wersja konstruktora
StringTokenizer(String, String, boolean) pozwala nam określić czy znaki rozdzielające mają być traktowane jako tokeny. W poniższym przykładzie ustawiamy własne znaki rozdzielające
# oraz
%, które będą również tokenami.
StringTokenizer st = new StringTokenizer(lancuch, "#%", true);
Wynik działania programu:
Podaj łańcuch: 123#17.5#8%Marek%Kowalski
Liczba tokenów w łańcuchu: 9
123
#
17.5
#
8
%
Marek
%
Kowalski
2 Komentarze - Podział łańcucha na części
Bóg nie bug
taka sytuacja
Prześlij komentarz
Możesz użyć niektórych tagów HTML, takich jak <b>, <i>, <u>, <a> Nie spamuj :)