Eine Zeichenkette in einem dynamischen Array zerlegen
Eine Funktion, die eine Zeichenfolge in Teilen getrennt durch eine Teilzeichenfolge unterteilt
und gibt die Teile in ein dynamisches String-array
Teilen einer Zeichenfolge in ein array
Die folgenden Funktionen zerlegt einen String in Teile getrennt durch eine Teilzeichenfolge und die Teile in ein dynamisches String-Array zurück:
interface
type
TStringArray = array of string;
function Split(const str: string;
const separator: string = ','): TStringArray;
function AnsiSplit(const str: string;
const separator: string = ','): TStringArray;
implementation
uses sysutils;
function Split(const str: string;
const separator: string): TStringArray;
// Returns an array with the parts of 'str' separated by 'separator'
var
i, n: integer;
p, q, s: PChar;
begin
SetLength(Result, Occurs(str, separator)+1);
p := PChar(str);
s := PChar(separator);
n := Length(separator);
i := 0;
repeat
q := StrPos(p, s);
if q = nil then q := StrScan(p, #0);
SetString(Result[i], p, q - p);
p := q + n;
inc(i);
until q^ = #0;
end;
function AnsiSplit(const str: string;
const separator: string): TStringArray;
// Returns an array with the parts of 'str' separated by 'separator'
// ANSI version
var
i, n: integer;
p, q, s: PChar;
begin
SetLength(Result, AnsiOccurs(str, separator)+1);
p := PChar(str);
s := PChar(separator);
n := Length(separator);
i := 0;
repeat
q := AnsiStrPos(p, s);
if q = nil then q := AnsiStrScan(p, #0);
SetString(Result[i], p, q - p);
p := q + n;
inc(i);
until q^ = #0;
end;
Beispiel:
procedure TForm1.Button1Click(Sender: TObject);
var
a: TStringArray;
i: integer;
begin
a := Split('part1,part2,part3');
for i := 0 to Length(a) - 1 do begin // Will show three dialogs
ShowMessage(a[i]); // 'part1', 'part2', 'part3'
end;
end;
Sie sehen ein Beispiel mit einem StringList anstelle eines dynamischen Arrays in einem separaten Artikel.
Eine Zeichenkette in einem dynamischen Array zerlegen
Eine Zeichenkette in einem dynamischen Array zerlegen : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Eine Funktion, die eine Zeichenfolge in Teilen getrennt durch eine Teilzeichenfolge unterteilt
und gibt die Teile in ein dynamisches String-array
Teilen einer Zeichenfolge in ein array
Die folgenden Funktionen zerlegt einen String in Teile getrennt durch eine Teilzeichenfolge und die Teile in ein dynamisches String-Array zurück:
interface
type
TStringArray = array of string;
function Split(const str: string;
const separator: string = ','): TStringArray;
function AnsiSplit(const str: string;
const separator: string = ','): TStringArray;
implementation
uses sysutils;
function Split(const str: string;
const separator: string): TStringArray;
// Returns an array with the parts of 'str' separated by 'separator'
var
i, n: integer;
p, q, s: PChar;
begin
SetLength(Result, Occurs(str, separator)+1);
p := PChar(str);
s := PChar(separator);
n := Length(separator);
i := 0;
repeat
q := StrPos(p, s);
if q = nil then q := StrScan(p, #0);
SetString(Result[i], p, q - p);
p := q + n;
inc(i);
until q^ = #0;
end;
function AnsiSplit(const str: string;
const separator: string): TStringArray;
// Returns an array with the parts of 'str' separated by 'separator'
// ANSI version
var
i, n: integer;
p, q, s: PChar;
begin
SetLength(Result, AnsiOccurs(str, separator)+1);
p := PChar(str);
s := PChar(separator);
n := Length(separator);
i := 0;
repeat
q := AnsiStrPos(p, s);
if q = nil then q := AnsiStrScan(p, #0);
SetString(Result[i], p, q - p);
p := q + n;
inc(i);
until q^ = #0;
end;
Beispiel:
procedure TForm1.Button1Click(Sender: TObject);
var
a: TStringArray;
i: integer;
begin
a := Split('part1,part2,part3');
for i := 0 to Length(a) - 1 do begin // Will show three dialogs
ShowMessage(a[i]); // 'part1', 'part2', 'part3'
end;
end;
Sie sehen ein Beispiel mit einem StringList anstelle eines dynamischen Arrays in einem separaten Artikel.
Eine Zeichenkette in einem dynamischen Array zerlegen
By Wiezutun
Eine Zeichenkette in einem dynamischen Array zerlegen : Mehreren tausend Tipps, um Ihr Leben einfacher machen.