Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ab und bis zu einem bestimmten Zeichen aus String kopieren (https://www.delphipraxis.net/158636-ab-und-bis-zu-einem-bestimmten-zeichen-aus-string-kopieren.html)

Ghostleader 24. Feb 2011 15:40

Delphi-Version: 2010

Ab und bis zu einem bestimmten Zeichen aus String kopieren
 
Hey.
Ich möchte aus einem String einem bestimmten zeichen ("1") bis zu einem weiteren bestimmten zeichen ("2") kopieren.

Beispiel:
String:
1xxxx2yyyy
Result:
xxxx

Mit copy() komme ich leider nicht weiter, deshalb frage ich hier.

Bisher benutz ich:

Code:
var1 := '1' + 'xxxx' + '2' + 'yyyy'; //'1xxxx2yyyy'
var2 := copy(var1, pos('1', var1)+1, pos('2', var1)-1);
Das kann natürlich nicht funktionieren, weil der zweite Teil von Copy, "Count", nur die Anzahl der zu kopierenden Stellen angibt.
Und leider nicht die genaue Position. Mit der genauen Position des letzten Buchstabens vor "2", kann ich daher nichts anfangen.

Weiß da jemand von euch weiter?

DeddyH 24. Feb 2011 15:43

AW: Ab und bis zu einem bestimmten Zeichen aus String kopieren
 
Delphi-Quellcode:
pos1 := pos('1', var1) + 1;
pos2 := pos('2', var1) - 1;
var2 := copy(var1, pos1, pos2 - pos1);

Ghostleader 24. Feb 2011 15:49

AW: Ab und bis zu einem bestimmten Zeichen aus String kopieren
 
achja. natürlich. :D
danke!

[Edit:]

Muss allerdings nicht
Zitat:

pos2 := pos('2', var1) - 1;
sondern pos2 := pos('2', var1); sein:

Ansonsten wird bei dem String "1xxxx2yyyy" als Ergebnis nur "xxx" ausgegeben und nicht "xxxx" ausgegeben.
Die Stelle die Pos2 zurückgibt ist bei meinem String "5" (also das letzte x). Pos2-Pos1 = 5-2 = 3.
"Count" von "Copy()" ist also 3 - Komischerweise wird das erste "x" (Pos1) bei den 3 Schritten, als erster Schritt, miteingeschlossen.
Also muss Pos2 ohne das "-1" benutzt werden und auf der "2" liegen.
Dann wäre Pos2-Pos1 = 6-2 = 4.

Kleiner Schönheitsfehler ;)
Danke nochmal...
[/Edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:42 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-2025 by Thomas Breitkreuz