Entwickler-Ecke
Sonstiges (Delphi) - String auseinander rupfen ??
Ace87 - Mo 30.10.06 15:38
Titel: String auseinander rupfen ??
Hallo
Ich wollte mal Fragen, ich ich einen Text auseinander rupfe.
Im meinem beipiel habe ich einen String, der mit ' Öffne Word' gefüllt ist;
und ich will nur Word rausfiltern, weil ich Word dann öffnen will.
kann mir jemand helfen?? ich habe keine Ahnung, wo ich zu suchen anfangen soll.
Mit freundlichen Grüßen
Ace
Marco D. - Mo 30.10.06 15:43
Schaue dir mal Pos und Copy an, damit kommst du weiter. ;)
jaenicke - Mo 30.10.06 15:44
Naja, generell mit Pos (Position eines Strings in einem anderen suchen), Copy (Teil eines Strings kopieren) und Delete (Teil eines Strings loeschen). Dazu dann PosEx, wenn man eine weitere Position eines Strings hinter dem ersten Vorkommen suchen willst.
Freiberger - Mo 30.10.06 15:45
Hy,
versuche es doch mal mit stringreplace.
Ersetze das Wort 'Öffne' einfach durch ''
dann löschst du mit Trim noch die überflüssigen Leerzeichen...
jaenicke - Mo 30.10.06 15:47
Naja, aber ich nehme an, dass er auch erstmal rausfinden muss, ob da Oeffne steht...
Ace87 - Mo 30.10.06 15:49
Ne die Abfrage, ob vorne öffnen steht habe ich schon
braucht nur den Text hinter Öffnen
Freiberger - Mo 30.10.06 15:52
oder du machst es mit TStringlist.
schau mal unter CommaText und DelimitedText.
Da kannst du auch lange text in einzelne Wörter zerlegen...
Marc. - Mo 30.10.06 15:53
oder so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| s: string; p: integer; begin s := 'Oeffne Word'; p := pos('Word',s); label1.Caption := copy(S,p,(1+length(S)- p)); |
copy ab gesamtlänge des strings - länge deines wortes = word ;)
jasocul - Mo 30.10.06 15:55
Na denn kannst du ja mit Pos, Copy, Delete und Length alles erledigen. Alternativ ginge der Einsatz von StringReplace. Je nachdem, wie Du vorgehen möchtest. Eine Übersicht mit Beispielen zu String-Operationen findest du auch auf meiner Web-Site in den "Tutorials".
Ace87 - Mo 30.10.06 15:55
ok habe es so gelöst
Delphi-Quelltext
1:
| StringReplace(Text,'Öffne','',[rfIgnoreCase]) |
hoffe das geht so
weil ich das gerade nicht ausprobieren kann
jaenicke - Mo 30.10.06 15:55
Naja, dann mach doch einfach
Delphi-Quelltext
1:
| Delete(DeinString, 1, Length(ZuEntfernenderString)); |
Beispiel:
Delphi-Quelltext
1:
| Delete(' Oeffne Word', 1, Length(' Oeffne ')); |
Natuerlich werden das dann Variablen sein, das Beispiel dient nur der Illustration...
Ace87 - Mo 30.10.06 15:58
also vielleicht noch zur erläuterung
ich weiß nicht was hinter Öffne steht
Word war jetzt nur ein beispiel
will das so machen, dass da irgend was hinter stehen kann
Marc. - Mo 30.10.06 16:12
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var s: string; p: integer; begin s := 'Oeffne DiesUndDasJenesUndAlles'; p := length(S)-6; label1.Caption := Trim(copy(S,7,p)); |
so gehts ;)
sofer nur "Oeffne XY" der Text ist! ;)
jaenicke - Mo 30.10.06 16:13
Ace87 hat folgendes geschrieben: |
also vielleicht noch zur erläuterung
ich weiß nicht was hinter Öffne steht
Word war jetzt nur ein beispiel
will das so machen, dass da irgend was hinter stehen kann |
Genau macht ja der Code mit Delete, den ich direkt vor diesem Zitat von dir gepostet habe...
Der loescht eben das ' Oeffne ' davor und in dem String ist danach nur noch alles, was dahinter steht drin.
Ace87 - Mo 30.10.06 16:21
würde aber nicht funktionieren, wenn man ' Oeffne Word' oder noch mehr leerzeichen davor schreibt
schreiben würde oder??
Marc. - Mo 30.10.06 16:24
Dann entfernst du halt die leerzeichen, die vor und hinter den wörtern stehen, mit Trim!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var s: string; p: integer; begin s := ' Oeffne DiesUndDasJenesUndAlles'; p := length(Trim(S))-6; label1.Caption := Trim(copy(Trim(S),7,p)); |
;)
jaenicke - Mo 30.10.06 16:31
Was meinst du, koennte nicht funktionieren? Der Befehl Delete loescht einfach die angegebene Anzahl von Zeichen. Und wegen dem Umlaut: Ich sitze hier an einem Solaris Betriebssystem, da hab ich keine Umlaute. Deshalb das Oe und so...
Ace87 - Mo 30.10.06 16:31
ok vielen dank
Probiere das gleich mal aus
aber kleine Frage zu dem von mir
Delphi-Quelltext
1:
| StringReplace(Text,'Öffne','',[rfIgnoreCase]) |
würde das auch funktionieren???
jaenicke - Mo 30.10.06 16:33
Klar, aber der Befehl ist in diesem Fall gar nicht notwendig. Der braucht naemlich vermutlich laenger, weil er eigentlich fuer das Ersetzen mehrerer Vorkommnisse eines Strings gedacht ist und ausserdem weitere Optionen hast (case-sensitive und so).
Freiberger - Mo 30.10.06 16:33
bei mir geht es wunderbar...
Text:= Trim( StringReplace(Text,'Öffne','',[rfIgnoreCase]) );
Ace87 - Mo 30.10.06 16:34
@ jaenicke
bei deinem Delete
löscht er das alle ' Öffnen' im ganzen String??
weil ich will ja nur das am anfang weg haben
jaenicke - Mo 30.10.06 16:41
Delete loescht nur das erste Vorkommen (anders als ReplaceString, das alle loescht). Delete sagst du: Loesche in dem String ab Zeichen Nummer x soundsoviele Zeichen aus dem String.
Mehr macht das nicht.
Wenn dein String also " Oeffne Word zum Oeffne n" ist, dann bleibt bei meinem Code danach "Word zum Oeffne n" uebrig.
Ace87 - Mo 30.10.06 16:53
StringReplace löscht nur alle, wenn man [rfReplaceAll] mitgibt
sonnst auch nur das erste
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!