Entwickler-Ecke

Sonstiges (Delphi) - Wie kann ich einen String zerteilen?


Pyr0cracker - Fr 28.03.03 18:33
Titel: Wie kann ich einen String zerteilen?
HI, gibts irgendeine Möglichkeit einen String an einer bestimmten Stelle zu teilen?

Quelltext
1:
2:
3:
4:
5:
6:
die ganze variable:
ganzer_text:='pyr0cracker[b]&[/b]niedersachsen'

die geteilten:
name:='pyr0cracker'
adresse:='niedersachsen'

ich meine das so das ich z.b. beim & den string teile.

danke im vorraus


Delete - Fr 28.03.03 18:46

pos, copy. Rest siehe Hilfe.


Wolff68 - Fr 28.03.03 21:27

Mal auf die schnelle:

Quelltext
1:
2:
name := Copy(ganzer_text, 0, Pos('[', ganzer_text)-1);
adresse := Copy(ganzer_text, Pos('/b]', ganzer_text)+1, Length(ganzer_text);

ungetestet
Mit dem +1 und -1 musst eventuell ein bischen experimentieren.


Pyr0cracker - Sa 29.03.03 01:06

Danke Wolff68, genau das habe ich gesucht.
gruß,


Pyr0cracker - Sa 29.03.03 18:02

Zitat:

Quelltext
1:
2:
name := Copy(ganzer_text, 0, Pos('[', ganzer_text)-1); 
adresse := Copy(ganzer_text, Pos('/b]', ganzer_text)+1, Length(ganzer_text);
ist gut, aber kann ich den String auch in mehr als 2 Teile spalten?
also man müsste irgendwie "weitersuchen" können...
bsp:
gesamt='eins&zwei&drei&vier&etc...';
teil1:='eins';
teil2:='zwei';
teil3:='drei';
teil4:='vier';
teil5:='etc ...';

Moderiert von user profile iconTino: Moderiert.

gruß


Delete - Sa 29.03.03 20:47

Such mal hier im Forum nach explode. :wink:

Mist falsche Forum. :?

Hier der Link: [http://www.delphi-forum.de/viewtopic.php?t=13017]explode[/url].


Stonebreaker - So 30.03.03 17:02

lol :D


CenBells - So 30.03.03 21:39

nee nicht explode,
aber im ernst, du könntest dir eine art explode selber schreiben, ist doch nicht so aufwendig. Übergibst den Delimiter und dann musst du halt nen Array zurückgeben...
Und in der Funktion machst du das, wie oben schon gesagt, in einer schleife, mit der abbruchbedingung

while pos(delimiter, AText) > 0 do begin

end;....


Gruß
Ken


Delete - So 30.03.03 22:23

Dürfte ich den Herren mal bitten auf den Link zu klicken, da er es anscheinend nicht getan hat. :evil:


Pyr0cracker - Mo 31.03.03 09:49

Luckie hat folgendes geschrieben:
Dürfte ich den Herren mal bitten auf den Link zu klicken, da er es anscheinend nicht getan hat. :evil:

meinst du mich? *angsthab*
ich hab doch gar nichts gesagt, aber die methode mit explode ist gut,
danke.


Delete - Mo 31.03.03 10:27

Nein, ich meine Cenbells.


CenBells - Mo 31.03.03 20:37

:autsch: da hab ich wohl etwas vorschnell gesch(l)ossen.
Ich dachte, der link würde zur php funktion explode gehen.

nicht böse sein :wink: :wink: :wink:

Gruß
Ken


berni - Di 01.04.03 13:52

Explode ist ja auch ganz nett.
Ich hatte mir mal sowas gebastelt als Schnellschuss, ging für meine Zwecke auch ...

Gruss,
Bernd


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
function TfrmXYZ.split(input:string; schar:char; s:integer): string;
{ Diese Funktion nimmt einen String INPUT, einen Delimiter SCHAR
  und einen Positionswert S und gibt den Teilstring zurück,
  der vor dem S-ten auftreden von SCHAR steht.
  INPUT:="Hallo -/- Welt" , SCHAR:="/", S:=1  ->  RETURN: "Hallo -"
  INPUT:="Hallo -/- Welt" , SCHAR:="/", S:=2  ->  RETURN: "- Welt"
  INPUT:="Hallo -/- saublöde -/- Welt"  , SCHAR:="/", S:=2  ->  RETURN: "- saublöde -" }
var
   i,n: integer;
   schop: string;
begin
   n := 0;
   for i := 1 to length(input) do
   begin
      if (input[i] = schar) then
      begin
         inc(n);
         if n = s then
         begin
            split := schop;
            exit;
         end
         else
            schop := '';
      end
      else
      begin
           schop := schop + input[i];
      end;
   end;
   split := schop;
end;


Moderiert von user profile iconTino: Code-Tags hinzugefügt.