Zum Inhalt springen

[Delphi] Abschneiden von String an/ab vorkommen eines Zeichens


Empfohlene Beiträge

Geschrieben

Ich habe folgendes Problem:

Ich habe ein Textfeld in dem ein Name als "Name, Vorname" drinsteht. Nun möche ich Name und Vorname in zwei getrennten Strings haben. Wie mache ich das am elegantesten?

Ich habe schon geschaut ob es nicht eine Funktion gibt, die mir sagt an welcher Stelle das Komma ist, damit ich danach abschneiden kann (mit welcher Funktion). Ich hab bis jetzt noch nicht das Passende gefunden.

Das wäre der Name. Dann bräuchte ich noch den Vornamen (2.Teilstring).

Das Problem an der Sache ist natürlich das ich nicht weiß wie lang der Name ist. Kann mir jemand helfen. Ich habe heute zum Freitag irgendwie ein Brett vor dem Kopf.

Daniel

Geschrieben

Hallo,

Die Funktion pos(substr, string) gibt dir den Index des ersten Vorkommens von substr in string zurück.

Konkret:

delim = pos(',', ed_name.text);

Dann einfach den String vom Anfang bis delim-1 auslesen und du hast den Namen.

Der String von delim+1 bis ende ergibt dann den Vornamen.

Geht über die copy funktion, die als Parameter den Startindex, die Anzahl der auszulesenden Zeichen und den auszulesenden String erwartet. Ich habe gerade kein Delphi zur verfügung und bin mir hier über die Reihenfolge nicht mehr ganz sicher.

Die Anzahl der Zeichen, die du für den Vornamen auslesen mußt ist:

count=length(ed_name.text)-delim.

Ich hoffe, dass hilft dir.

Gruß

Nils

Geschrieben

Danke für die ausführliche Antwort. Ich werd es Montag gleich mal ausprobieren.

Daniel

Geschrieben
Geht über die copy funktion, die als Parameter den Startindex, die Anzahl der auszulesenden Zeichen und den auszulesenden String erwartet. Ich habe gerade kein Delphi zur verfügung und bin mir hier über die Reihenfolge nicht mehr ganz sicher.

function Copy(S: String; Index, Count: Integer): String;

Kopiert Count Zeichen ab dem Indexten Zeichen aus dem String S. :)

Geschrieben


procedure SplitString(const St, DelimitedBy: string; var Substr1, Substr2: string);

var

  I: Integer;

  S : string;

begin

  // Zwischenkopie um überschreiben von St zu verhindern

  S:= st;

  I:= Pos(DelimitedBy, S);

  if I > 0 then

  begin

    Substr1:= Copy(S, 1, I-1);

    Substr2:= Copy(S, I+Length(DelimitedBy), Length(S));

  end else

  begin

    Substr1:= S;

    Substr2:= '';

  end;

end;

Eigentlich nichts anderes, als davor schon beschrieben.

Geschrieben

Für den ersten Substring habe ich jetzt mit Pos die Anzahl der Zeichen (bis zum Komma) bestimmt und dann mit LeftStr das Ganze zurechtgeschnitten. Den zweiten Substring brauche ich jetzt doch nicht. Hat sich gerade ergeben.

Danke für alle Antworten.

Daniel

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...