![]() |
Zeichenkette gezeilt absuchen und gefundene Zeichenausschnei
Hallo zusammen,
ich würde gernen eine Zeichenkette die so aussieht PRD'#*D#+'54123'#++'-->' nach den Zahlen durchsuchen und diese dann ausschneiden und in einer variablen speichern. Hab leider keine Idee wie :-( Ist ja auch Montag. Hat jemand ne Idee? |
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
Delphi-Quellcode:
for i := 1 to length(str)
if str[i] = gesuchtes_zeichen then machwas |
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
Das ist glaube ich nicht genau das was ich suche.
Leider weiß ich nicht genau die Zahlen. Ich würde gerne sagen. Lese den String von PRD bis > aus und speicher die darin enthalten Zahlen unter value ab. |
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
Wenn der String vom Aufbau her immer gleich ist, kannst du mit Copy einfach kopieren.
Ändert sich der Aufbau und es gibt noch bestimmte Kriterien, die immer passen (z.B. immer 'zahl'), kannst du mit Pos arbeiten. Wenn es keine Kriterien gibt, kannst du den String Zeichen für Zeichen durchgehen bis zu der Stelle, wo du zum ersten Mal eine Zahl findest. Von da aus dann weiter bis du ein Zeichen findest, was keine Zahl ist. :) |
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
du willst also alle zahlen die da drin sind speichern?
Delphi-Quellcode:
for i := 1 to length(str)
if str[i] in ['0'..'9'] then speicher_key[i] |
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
Das Problem ist das ich eine sehr lange zeichenkette bekomme.
Das heißt in der variablen die ich abfragen möchte sind auch zahlen gespeichert die nicht zwischen PRD und > stehen, ich möchte aber die zeichenkette durchfosrten und nur die zahlen "filtern" die zwischen prd und > stehen. Gibt es keine anweisung die sagt, schau in die zeichenkette, wenn du prd findest dann suche nach zahlen, speicher diese in value ab, schau aber nur solange bis du > siehst. gehe dann weiter und durchforste den nächsten ablauf, wenn du wieder prd findest, bsi > speicher dies in einer anderen variablen ab, etc. |
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
schneide doch einfach von dem einem bis zu anderen zeichern herraus und durchsuche sie dann mit der suchroutine
Pos, Copy |
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
der strang siehst z.b. so aus:
'j 1000 4000' pof#*'-->PRD'%&/'45465'##*'-->PRD'hgdas()'45811'#+*'-->' usw. Ich würde also gerne die zahlen zwischen prd und --> herausfinden udn jeweils in einer fortlaufendne variablen abspeichern |
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
ich hab dir doch geschrieben wie man es machen könnte oder willst du den quelltext von mir?
|
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
verstehe nicht wie ich von einem zum anderen zeichen heraus schneiden kann wenn die wörter doppelt sind, also wenn zweimal prd vorkommt
|
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
Keiner mehr eine Idee?
|
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
Hallo skaven,
für Probleme dieser Art eignen sich [dp]reguläre Ausdrücke[/dp], mit deren Hilfe Du Dein Problem vielleicht in der Art
Delphi-Quellcode:
lösen könntest.
with RegExp('PRD[^>]*?(\d+)[^>]*>') do
if Execute(AString) then repeat myResult.Add(Match[1]); until not ExecuteNext; |
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
Zitat:
Zumal doch genügend Lösungswege genannt wurden. Ausserdem...... Du weisst das in der Delphi-PRAXIS das "pushen" erst nach mindestens 24 Stunden erwünscht ist. :warn: |
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
Tut mir Leid, aber bin sehr ungeduldig wenn ich nicht weiter komme.
SORRY nochmal |
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
@Skaven: Sorry, das Forum ist dazu da dir Denkansätze zu geben. Nicht fertige Quellcodes zu präsentieren.
Und von den Denkansätzen solltest du hier mehr als genug bekommen haben. Zitat:
|
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
auf die gefahr hin das ich aussagen meiner vorredner wiederhole:
Delphi-Quellcode:
so, wenn du nun mehrere "'prd'-'>'-konstruktionen" hast, könntest du sowas in die schleife machen machen:
for i:=1 to length(ausdruck) do
if ausdruck[i] in ['1'..'9'] then zahlen.Add(ausdruck[i]); wenn aktuelles zeichen gleich dem endzeichen ist, dan lösche alle zeichen bis zum endzeichen inclusive des endzeichens was dabei noch an "haken" bzw notwändigen änderungen im aufbau auftreten wirst du dann noch merken |
Re: Zeichenkette gezeilt absuchen und gefundene Zeichenaussc
Dabke allen, die mir geholfen haben.
Das Programm ist fertig, smile |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz