Wykorzystanie funkcji Split w Delphi 8

Adam Boduch

Funkcja Split na pewno jest znana programistom PHP, czy Perla. Warto dodać że jest to funkcja bardzo przydatna i często używana. Umożliwia bowiem rozdzielenie łańcucha na mniejsze fragmenty na podstawie podanego separatora. W Delphi 8 za sprawą .NET funkcja Split wprowadzona została do klasy System.String.

Poniższy listing prezentuje sposób na rozdzielenie łańcucha "Ala ma kota" na pojedyncze wyrazy. Znakiem separatora będzie spacja.

program Split_String;

{$APPTYPE CONSOLE}

uses
  Windows,
  System; // <-- odpowiednie moduły

var
  S : String;
  Separator : array of Char;  // separator
  Result : array of String; // tablica po rozdzieleniu
  I : Integer;

begin
  SetLength(Separator, 1);
  Separator[0] := ' ';  // tylko jeden separator

  S := 'Ala ma kota'; // łańcuch do rozdzielenia
  Result := S.Split(Separator);

  for I := Low(Result) to High(Result) do
  begin
    Writeln('Pozycja nr ' + Convert.ToString(I) + ': ' + Result[i]);
  end;

  Readln;

end.

Wobec tego, że zmienna S wskazuje na klasę System.String można z takiej zmiennej korzystać jak ze zwykłego obiektu.
Funkcja Split wymagania podania parametru w postaci tablicy typu Char zawierającej znaki mające posłużyć jako separator na podstawie którego łańcuch zostanie rozdzielony.
Rezultatem działania funkcji jest tablica typu String zawierająca rozdzielony tekst, po jednym wyrazie w jednym elemencie. Rezultatem działania takiego programu będzie pojawienie się w konsoli tekstu:

Pozycja nr 0: Ala
Pozycja nr 1: ma
Pozycja nr 2: kota

6 komentarzy

A nie można zrobić np. tak:

Result := S.Split(' &?;');

?

Nie, parametrem musi być tablica Char.

Dla mnie jakos to nie wyglonda najlepiej w PHp i perlu lepiej to wyglonda.

wow, w d8 string jest obiektem?

A nie można wrzucić tego do FAQ'a?

Sprawdziłem u siebie.. i działa :)