Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Effiziente Methode, einen String mittels Delimiter zu splitten

  Alt 11. Apr 2018, 09:14
Delphi-Version: 10.2 Tokyo
Hallo!

Ich kenne mittlerweile ein halbes Dutzend Methoden, einen String anhand eines Delimiter zu splitten. Die meisten arbeiten mit TStringList. Entweder mit DelimitedText, was aber den Nachteil hat dass man nur ein Zeichen (Char) als Delimiter einsetzen kann. Oder mittels SL.Text:= StringReplace(TheString, TheDelimiter, sLineBreak, [rfReplaceAll]); Teilweise habe ich auch schon gesehen, den String mit einer Runner-Schleife zu durchlaufen, Memcopy je Zeichen in einen zweiten String zu machen und beim Auffinden eines Delimiter den zweiten String in eine Stringliste zu adden. Davon gibt es auch noch eine Variante, einen String als PChar anzusprechen, den Zeiger zu schubsen, Memcopy direkt auf StringList.Text zu machen und gefundene Delimiter durch sLineBreak zu ersetzen.

Nur frage ich mich, wie effizient ist denn diese ganze "Schleiferei"? Die meisten dieser Codeschnipsel sind 10 Jahre und älter. Gibt es vielleicht inzwischen in der RTL mitgeliefert schon eine Art Äquivalent zu der explode()-Funktion in PHP, die z.B. ein TStringDynArray auswirft?

Grüße
Cody

EDIT: PS: Schön wäre die Möglichkeit, als Delimiter mehr als ein Zeichen (Char) verwenden zu können.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter (11. Apr 2018 um 09:18 Uhr)
  Mit Zitat antworten Zitat