Public Class StringTokenizer

  Private s As String
  Private i As Integer
  Private sep As String               'Separator tokenów
  '------
  Public Sub New(ByVal st As String)
    MyBase.New()
    s = st                            'Przechowaj łańcuch
    sep = " "                         'Domyślny separator
  End Sub
  '------
  Public Sub New(ByVal st As String, ByVal sepr As String)
    MyBase.New()
    s = st
    sep = sepr
  End Sub
  '------
  Public Sub setSeparator(ByVal sp As String)
    sep = sp                          'Przechowaj znak separatora
  End Sub
  '------
  Public Function nextToken() As String
    Dim tok As String
    Try
      i = s.IndexOf(sep)              'Poszukaj wystąpienia separatora

      If i > 0 Then                   'jeśli znaleziony
        tok = s.Substring(0, i).Trim  'Zwróć podciąg po jego lewej stronie
        s = s.Substring(i + 1).Trim   'Skróć ciąg wejściowy  

      Else
        tok = s                       'W przeciwym razie zwróć resztę ciągu
        s = ""                        'A ciąg wejściowy uczyń pustym
      End If
    Catch e As Exception
      tok = ""
    End Try
    Return tok
  End Function
  '-----
  Public Function hasMoreElements() As Boolean
    Return s.Length > 0
  End Function
End Class
