![]() |
String nach Trennzeichen aufteilen
Hallo ihr alle,
habe ein kleines Anfängerproblem. Habe einen String mit unterschiedlicher Länge, welcher über einen Barcodeleser eingelesen wird. Funzt auch alles so weit recht gut. Der Barcode besteht jedoch aus zwei Teilen getrennt durch ein Pipe. Das bedeutet der Code sieht so aus: 22001232|5444555 . Diese Pipe trennt nun den linken Teil (Auftragsnummer) vom rechten Teil (Bezeichner). Beide brauche ich für sepparate SELECTs. Wie kriege ich die linke Seite von der rechten getrennt und beide somit als extra String? Es sei noch bemerkt, daß die Strings nicht immer gleich lang sind, aber immer durch ein Pipe getrennt sind. Bestimmt ist das ganz einfach, doch wie gesagt "Anfänger" hinsichtlich Delphi! |
Re: String nach Trennzeichen aufteilen
such mal nach "Explode":
![]() edit: oder besuch gleich diesen link hier: ![]() mfG mirage228 |
Re: String nach Trennzeichen aufteilen
S1 := Copy(S, 1, Pos('|', S) - 1);
S2 := Copy(S, Pos('|', S) + 1, Length(S)); |
Re: String nach Trennzeichen aufteilen
Whow, das ist ja schneller als wenn ich selber in einem Buch suche. Super hier, DANKE!!!!!!!
|
Re: String nach Trennzeichen aufteilen
hi,
also ich habe es immer so gemacht:
Delphi-Quellcode:
und dann mit:
function strn(s: string; index: integer; sep: char): string;
var sl: TStringList; begin sl := TStringList.Create; Try Repeat if Pos(sep, s) <> 0 then begin sl.Add(Copy(s, 1, Pos(sep, s)-1)); Delete(s, 1, Pos(sep, s)); end else begin sl.Add(s); s := ''; end; until s = ''; if index <= sl.Count then Result := sl.Strings[index-1] else Result := ''; finally sl.Free; end; end;
Delphi-Quellcode:
procedure irgendwas;
var s: string; begin s := strn(irgendeinstring, 1, ',') // das 2te is der 2te teil nach dem 1ten seperator des strings..das 3te der seperator selbst end; |
Re: String nach Trennzeichen aufteilen
@silent
Nicht schlecht, vor allem wenn mehreres geteilt werden soll. Ist sogar kürzer als das worauf mirage228 verlinkt hat. Da ChrisH90 immer genau 2 Teile hat, ist es vielleicht etwas umständlich. kleiner Tipp: Wenn du in die Repeat-Schleife noch einen Zähler einbaust, kannst'e die Funktion unter umständern noch etwas beschleunigen. (z.B. wenn der 3. Werte gesucht wird, nach dem 3. Durchgang Repeat verlassen) Nachtrag (zum Beispiel so):
Delphi-Quellcode:
function strn(s: string; index: integer; sep: char): string;
var sl: TStringList; i: integer; {*} begin sl := TStringList.Create; Try i := 0; {*} Repeat inc(i); {*} if Pos(sep, s) <> 0 then begin sl.Add(Copy(s, 1, Pos(sep, s)-1)); Delete(s, 1, Pos(sep, s)); end else begin sl.Add(s); s := ''; end; until (s = '') or (i = index); {*} if index <= sl.Count then Result := sl.Strings[index-1] else Result := ''; finally sl.Free; end; end; |
Re: String nach Trennzeichen aufteilen
danke, werd ich mal ändern ^^
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz