ExtractStrings

Adam Boduch
ExtractStrings
Moduł: Classes
```delphi function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings): Integer; ``` [[Delphi/Funkcje|Funkcja]] umożliwia rozdzielenie łańcucha przekazanego w parametrze Content na podstawie separatorów.

Czasami zachodzi konieczność rozdzielenie łańcucha na podstawie określonych separatorów (znaków) i przypisanie rozdzielonych fragmentów tekstu do tablicy czy innego typu danych. Funkcja ExtractStrings rozdziela łańcuch Content na podstawie separatórow określonych w parametrze Separators. Rozdzielone fragmenty łańcucha zostaną przypisane do typu TStrings określonego w parametrze Strings.

WhiteSpace to zbiór znaków, które będą ignorowane jeżeli występują na początku rozdzieloneg fragmentu. Aby lepiej to zrozumieć przypatrz się poniższemu fragmentowi kodu:

const
  Foo = 'Delphi, Classes, Split, rozdzielanie łancucha; Memo1';
begin
  ExtractStrings([',', ';'], [], Foo, Memo1.Lines);
end;

Takie instrukcje spowodują dodanie do komponentu TMemo następującego tekstu:

<tt>Delphi
Classes
Split
rozdzielanie łancucha
Memo1</tt>

Jak widać uwzględnione zostały spacje na poczatku rozdzielonych fragmentów. Aby temu zaradzić możemy wywołać funkcję ExtractStrings w następujący sposób:

ExtractStrings([',', ';'], [' '], Foo, Memo1.Lines);

Funkcja ExtractStrings zwraca ilość fragmentów, które zostały przypiasne do parametru Strings.

Zobacz też:

3 komentarzy

kurczę, ja też sobie zrobiłem własną funkcję na potrzeby czytania csv, no ale moja nie pomija pustych wartości:)

W Delphi nie sprawdzałem ale gdy korzystam z Lazarusa to funkcja nie działa prawidłowo, jeżeli w łańcuchu wejściowym występują puste kolumny (kilka separatorów pod rząd). Funkcja pomija wtedy puste łańcuchy np. gdy we= 123,abc,,,xyz zwraca tylko trzy wiersze 123 abc xyz

Kurwa... A ja przez tyle lat robilem to "recznie"... Tak to jest jak sie nie zna funkcji... xD