Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Effiziente Methode, einen String mittels Delimiter zu splitten

  Alt 19. Aug 2018, 22:24
Ich war gerade auch auf der Suche danach, einen String zu splitten und einen Rückgabewert zu erhalten (für eine bestimmte Position im String), mittels einer Standard-Funktion in Delphi, um nicht immer direkt meine eigenen Units einbinden zu müssen, wenn man mal nur einen kleinen Demo-source zeigen möchte.

SplitString hatte ich dann in StrUtils gefunden, aber hier im Forum nochmal interessehalber mal nach "Splitstring" gesucht.

Und siehe da, String.Split ist natürlich noch viel schöner und außerdem schon in System.Sysutils drin, die automatisch eingebunden wird, wenn man eine neue Form anlegt.

Damit kann man das elegant so machen:

Delphi-Quellcode:
procedure TF_Main.Button1Click(Sender: TObject);
var
  s, Part: string;
begin
  s := '#Müller#Hans#Bonn';

  // bisher "GetFieldStr" aus meiner eigenen Unit
  // ShowMessage (GetFieldStr ('#', S, 2); // Müller, Zähung 1-basiert

  ShowMessage (Splitstring (S, '#')[1]); //Müller, Zählung 0-basiert

  // Noch kürzer geht es so
  ShowMessage (S.Split(['#'])[3]); // Bonn
end;
Etwas schade ist zwar, dass ein dynamisches Array für alle Teilstrings erzeugt wird, da ich eigentlich nur einen Eintrag brauche, aber wie gesagt, brauche keine extra Unit und wenn es nicht auf Performance ankommt, bzw. ein Demo zu gestalten, ohne Drittfunktionen zu brauchen, dann geht das schon mal so.

Geändert von Harry Stahl (20. Aug 2018 um 01:20 Uhr)
  Mit Zitat antworten Zitat