Programowanie w języku Delphi

ExtractStrings

ExtractStrings
Moduł: Classes

function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings): Integer;

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:

Delphi
 Classes
 Split
 rozdzielanie łancucha
 Memo1


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ż:

5 komentarzy

Brak avatara
darek 2014-04-30 21:45

A co się stanie gdy Foo przybierze taką postać?
  Foo = 'Delphi, Classes, Split, rozdziel'anie łancucha; Memo1';

słowo rozdzielanie będzie miało apostrof? lub będzie kilka takich słów?  np. kilka razy wystąpi Model pojazdu: CEE'D?

lankusiek 2011-08-11 09:47

w c++ można zrobić to tak:

int main ()
{
  char str[] ="C++, Classes, Split, rozdzielanie łancucha; Memo1";
  char * foo;
  foo = strtok (str," ,;");
  while (foo != NULL)
  {
    printf ("%s\n",foo);
    foo = strtok (NULL, " ,;");
  }
  getch();
  return 0;
 
}

TomRiddle 2011-08-05 14:12

Powie ktoś jak to się robi w C++?

lankusiek 2011-04-04 11:42

To jak tyle lat robiłeś to ręcznie to czemu swojej funkcji nie zapisałeś do jakiegoś modułu.
Widocznie dalej nie wiesz o co chodzi w programowaniu :D

WIktorDelphi 2008-03-10 16:52

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