How to Parse a Delimited String Into a String List

Black man using laptop in coffee shop
Roberto Westbrook / Getty Images

There are many times when you need to split a string into an array of strings by using a character as a separator. For example, a CSV ("comma" separated) file might have a line like "Zarko;Gajic;;DelphiGuide" and you want this line to be parsed into 4 lines (strings) "Zarko", "Gajic", "" (empty string) and "DelphiGuide" using the semi-colon character ";" as a delimiter.

Delphi provides several methods to parse a string, but you might find that neither one does exactly what you need.

For example, the ExtractStrings RTL method always uses quote characters (single or double) for delimiters. Another approach is to use the ​Delimiter and ​DelimitedText properties of the TStrings class - but unfortunately, there is a bug in the implementation ("inside" Delphi) where the space character is always used as a delimiter.

The only solution to parsing a delimited string is to write a method of your own:

~~~~~~~~~~~~~~~~~~~~~~~~~
procedure ParseDelimited(const sl : TStrings; const value : string; const delimiter : string) ;
var
   dx : integer;
   ns : string;
   txt : string;
   delta : integer;
begin
   delta := Length(delimiter) ;
   txt := value + delimiter;
   sl.BeginUpdate;
   sl.Clear;
   try
     while Length(txt) > 0 do
     begin
       dx := Pos(delimiter, txt) ;
       ns := Copy(txt,0,dx-1) ;
       sl.Add(ns) ;
       txt := Copy(txt,dx+delta,MaxInt) ;
     end;
   finally
     sl.EndUpdate;
   end;
end;
~~~~~~~~~~~~~~~~~~~~~~~~~

Usage (fills in Memo1) :
ParseDelimited(Memo1.lines,'Zarko;Gajic;;DelphiGuide',';')

Delphi tips navigator:
» Understanding and Using Array Data Types in Delphi 
« String Handling Routines - Delphi Programming 

Format
mla apa chicago
Your Citation
Gajic, Zarko. "How to Parse a Delimited String Into a String List." ThoughtCo, May. 18, 2017, thoughtco.com/parse-a-delimited-string-1057564. Gajic, Zarko. (2017, May 18). How to Parse a Delimited String Into a String List. Retrieved from https://www.thoughtco.com/parse-a-delimited-string-1057564 Gajic, Zarko. "How to Parse a Delimited String Into a String List." ThoughtCo. https://www.thoughtco.com/parse-a-delimited-string-1057564 (accessed May 26, 2018).