Yo usaria las funciones
Split:
Código Delphi
[-]
uses
System.Types,
System.SysUtils,
System.StrUtils;
var
Original, Each: string;
Palabras: TArray<string>;
MasPalabras: System.Types.TStringDynArray;
begin
Original := 'Jirafa - Elefante - Sapo - Ardilla';
Palabras := Original.Split(['-']);
Writeln('Usando TStringHelper.Split: ');
Write('Cantidad de palabras: '); Writeln(System.Length(Palabras));
for Each in Palabras do
WriteLn(Each);
WriteLn;
Writeln('Usando System.StrUtils.SplitString: ');
MasPalabras := System.StrUtils.SplitString(Original, '-');
Write('Cantidad de palabras: '); Writeln(System.Length(MasPalabras));
for Each in MasPalabras do
WriteLn(Each);
Readln;
end.
Salida:
Código Delphi
[-]Usando TStringHelper.Split:
Cantidad de palabras: 4
Jirafa
Elefante
Sapo
Ardilla
Usando System.StrUtils.SplitString:
Cantidad de palabras: 4
Jirafa
Elefante
Sapo
Ardilla
Ten en cuenta que no le
recorta el espacio al inicio de cada cadena. Para eso podrias usar las funciones Trim