Podział łańcucha na części

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

tstoj pisze...

Bóg nie bug

obiady domowe Łowicz pisze...

taka sytuacja

Prześlij komentarz

Możesz użyć niektórych tagów HTML, takich jak <b>, <i>, <u>, <a> Nie spamuj :)

Popularne posty