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

Eine Zeichenkette in einem dynamischen Array zerlegen : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Eine Zeichenkette in einem dynamischen Array zerlegen
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung