Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Empfohlene Antworten

Veröffentlicht

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

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

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

Daniel

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. :)


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.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.