Entwickler-Ecke
Sonstiges (Delphi) - Wert zwischen zwei Zeichen ausschneiden
hibbert - Mi 17.12.03 21:44
Titel: Wert zwischen zwei Zeichen ausschneiden
Hi,
wie kann ich einen Text aus einen String ausschneiden der zwischen 2 zeichen liegt.
z.B:
soll aus
werden.
wie mache ich das ?
thx hibbert
Delete - Mi 17.12.03 22:07
Es gibt mehrere Möglichkeiten.
1. Wenn dein String immer so aussieht, wäre bspw. StringReplace eine Idee, indem du das Dollarzeichen durch Nichts/Nüscht/Leerstring ersetzt.
2. Alternativ dazu kannst du auch den String mit SetLength und delete bearbeiten, um das erste und letzte Zeichen zu entfernen, wenn und solange es Dollarzeichen sind.
3. Mit zwei integer-Variablen die Position des ersten und des letzten Dollarzeichens herausfinden, und den Teil dazwischen mit copy herauskopieren.
hibbert - Mi 17.12.03 22:13
opps, :oops:
ich habe mich falsch ausgedrückt, sorry.
ich meinte dass aus einem String wie
Zitat: |
$username$Hallo du |
soewtas wird:
und die "$" entfernt werden und der username in einer Variabel gespeichert wird.
Das rest des Strings (in dem Falle
Halo du) soll danach ebanfalls in einer Variable gespeichert werden.
sorry für meinen Fehler :oops:
thx hibbert
Delete - Mi 17.12.03 22:19
explode [
http://www.delphi-forum.de/viewtopic.php?t=13017&highlight=explode]. Damit kannst du einen String anhand eines Zeichens in ein Array zerlegen (ähnelt Perl/PHP und Co.). Allerdings startet dein String auch mit einem Dollarzeichen (was ich als Trenner vorschlagen würde), daher wird der erste Eintrag im Array wohl immer ein Leerstring sein - wenn alle deine Strings so aussehen.
Du musst wissen, ob du damit leben kannst. Ich könnte es ... ;)
hibbert - Mi 17.12.03 22:24
MathiasSimmack hat folgendes geschrieben: |
Du musst wissen, ob du damit leben kannst. Ich könnte es ... ;) |
Klar kann ich damit leben, denn ich kann das zeichen doch nachträglich durch "nichts" ersetzen :wink:
mhh, geht das nicht auch einfacher mit dem erstezen usw.
in etwa dieser art?
Zitat: |
Memo1.Text := StringReplace(Memo1.Text,edit1.Text,edit2.Text,[rfReplaceAll]); |
Ist jetzt nur ein Beispiel zum erstezen, aber ich will ja einen Teil zwischen zwei Zeichen auslesen.
Kann ich nich auch irgendwie die anzahl der Zeichen zwischen den beiden "$" auslesen?
hibbert
Delete - Mi 17.12.03 22:37
Ersetzen? Wie jetzt? :? Welchen Teil bei
[url=http://www.delphi-forum.de/viewtopic.php?t=13017&highlight=explode]explode[/url] hast du nicht verstanden?
explode zerlegt den String, den du angibst, in ein Array. Als Trenner dient dabei das von dir gewählte Zeichen. Und da bietet sich das Dollarzeichen an, weil es ganz offensichtlich "username" von "hallo du" trennt:
Wie ich aber sagte, beginnt dein String ja auch schon mit einem Dollarzeichen. Das bedeutet, der (eigentlich nicht existente) Teil davor wird als Leerstring in das Array eingetragen.
Verstehst du das Prinzip nun? Wenn nicht, folge dem Link, kopier dir die Funktion und probier´s einfach mal aus!
hibbert - Mi 17.12.03 23:26
ich komme mit der ganzen Funktion nicht klar.
Ich weiß nicht, wo und wie ich da meine eigene Variable bzw. String da einbinden kann und wie ich diesen einzeln abrufen kann.
thx hibbert
MasterBilke - Do 18.12.03 08:04
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| hilfe := Pos(', ,', MSG); Wert1 := StrToInt(Copy(MSG, 1, hilfe-1)); Delete(MSG, 1, hilfe+2); hilfe := Pos(', ,', MSG); Wert2 := StrToInt(Copy(MSG, 1, hilfe-1)); Delete(MSG, 1, hilfe+2); hilfe := Pos(', ,', MSG); Wert3 := Copy(MSG, 1, hilfe-1); |
so krieg ich alle werte aus ein string der form
Delphi-Quelltext
1:
| String := 'xkoord, ,ykoord, ,nochnwert, ,'; |
raus..kannst ja sowas probieren...
Delete - Do 18.12.03 11:25
hibbert hat folgendes geschrieben: |
ich komme mit der ganzen Funktion nicht klar.
Ich weiß nicht, wo und wie ich da meine eigene Variable bzw. String da einbinden kann und wie ich diesen einzeln abrufen kann. |
Mensch, da gibt´s sogar ein Beispiel dazu, das du nur umbauen musst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var s : string; exparr : TStringDynArray; x : integer; begin s := '$username$hallo du'; exparr := explode('$',s);
for x := 0 to high(exparr) do ShowMessage( Format('Index %d = %s',[x,exparr[x]]) ); end; |
Und du willst mir erzählen,
das hast du nicht selbst hinbekommen?
hibbert - Do 18.12.03 15:37
Danke !! :D
hibbert
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!