Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
otti

Anmeldungsdatum: 28.02.2005 Beiträge: 112 Wohnort: Wildberg
|
Verfasst am: 29.03.2005, 20:13 Titel: Problem bei Bearbeitung eines Strings |
|
|
hallo,
schon wieder n problem
sorry.
folgendes prog soll einfach nur in der zeichenkette text$ ein "!" finden.Tut es aber nicht.
Code: |
text$ = "abc!defg"
DO
x = x + 1
b$ = LEFT$(text$, x)
SELECT CASE b$
CASE CHR$(33): PRINT "! gefunden"
CASE ELSE: s = s
END SELECT
PRINT x, s
LOOP UNTIL x = LEN(text$)
|
Danke im vorraus,
otti _________________ Gute Musik
 |
|
Nach oben |
|
 |
Kai Bareis

Anmeldungsdatum: 10.09.2004 Beiträge: 545 Wohnort: Baden Würtemberg
|
Verfasst am: 29.03.2005, 20:22 Titel: |
|
|
das Programm geht deswegen nicht, da du jedes Zeichen einzelnt einlesen musst!
Code: | text$ = "abc!defg"
DO
x = x + 1
b$ = MID$(text$, x,1)
SELECT CASE b$
CASE CHR$(33): PRINT "! gefunden"
CASE ELSE: s = s
END SELECT
PRINT x, s
LOOP UNTIL x = LEN(text$) |
sollte dann eigentlich gehen
Edit: LEFT$(Zeichenkette,n) liest den String von Links aus ein um n Stellen
bei MID$ ist es etwas anderst dort lässt sich bestimmen von wo er anfangen soll und wieviel Zeichen er einlessen soll _________________ MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht! |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 29.03.2005, 20:29 Titel: |
|
|
Oder man kann sich das ganze ersparen, und mit INSTR arbeiten.
Bsp:
Code: |
LINE INPUT Text$
IF INSTR(Text$, "!") THEN PRINT "Da is n Aufrufezeichen drin!"
|
jb |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 29.03.2005, 20:30 Titel: |
|
|
Oder du benutzt die QB-Integrierte Methode INSTR:
Code: |
text$="abc!defg"
Stelle = INSTR(text$, "!")
|
Wenn "!" nicht gefunden wird, ist Stelle 0. Ansonsten ist es die Position im String, an der "!" steht.
Das Praktsiche ist, dass INSTR auch mit längeren Ketten funktioniert, z.B.
INSTR(text$, "abc")
Viel Spaß!
Ciao _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 29.03.2005, 20:31 Titel: |
|
|
Dusky_Joe, du Antwort-Klauer
jb |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 29.03.2005, 20:35 Titel: |
|
|
Sorry, wir waren wohl ziemlich zur selben Zeit mit den Antworten zur stelle *G* _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 29.03.2005, 20:37 Titel: |
|
|
Jo, eine Minute Unterschied.
Da macht man nix...
jb |
|
Nach oben |
|
 |
otti

Anmeldungsdatum: 28.02.2005 Beiträge: 112 Wohnort: Wildberg
|
Verfasst am: 30.03.2005, 11:50 Titel: ok,aber ... |
|
|
..Danke erstmal ,aber was ,wenn in einem code mehre ! sind,oder wenn auch "?" gesucht werden sollen?
also..:
Code: | text$="12!45?78!9?" |
Danke im vorraus ,
greetz
otti _________________ Gute Musik
 |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 30.03.2005, 12:35 Titel: |
|
|
Wenn du die genaue Position, an der z.B. ein "!" ist, wissen willst, musst du schon
eine eigene Routine bauen.
Bsp:
Code: |
Text$ = "Hallo!"
FOR i = 1 TO LEN(Text$)
IF MID$(Text$, i, 1) = "!" THEN PRINT "Ein ! an Position "; i; "gefunden!"
NEXT i
|
Das kann man dann für andere Zeichen leicht modifizieren.
jb |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 30.03.2005, 12:46 Titel: |
|
|
Sobald du mehrere Sachen suchst, kommst du mit einem INSTR nicht mehr aus. Dann solltest du mit einer Schleife arbeiten.
Wenn du zum Beispiel nur die Anzahl der Fragezeichen (nicht die Position) haben willst hier der Ansatz.
text$ = "abc?d??efghij?"
such$ = "?"
loesch$ = "*"
gefunden = 0
tempText$ = text$
while instr(temptext$, such$)
gefunden = gefunden + 1
mid$(temptext$, instr(temptext$) = loesch$
wend
Diese Schleife liefert irgendwann mal den Wert gefunden zurück. Habs noch nicht getestet, funktioniert bestimmt auch noch nicht!
Die Schleife soll mit INSTR das nächste Fragezeichen finden, die gefunden-Variable um eins erhöhen und dann das gefundene Fragezeichen durch ein anderes ersetzen. Dadurch findet INSTR immer ein neues Fragezeichen. Bei mid$ bin ich mir gerade nicht so sicher, ob das so klappt. Hab leider gerade kein QB zur Hand.
EDIT:
Naja und hier der komplette getestete Code
Code: |
'von SpionAtom
1 CLS
text$ = "abc?def?g???hijk?lmno?"
such$ = "?"
loesch$ = "*"
gefunden% = 0
tempText$ = text$
WHILE INSTR(tempText$, such$) > 0
gefunden% = gefunden% + 1
MID$(tempText$, INSTR(tempText$, such$)) = loesch$
WEND
|
EDIT (die zweite):
Also, da kann man auch gut eine FUNCTION draus machen. Ich in richtig selbstverliebt in meinen Code.
Was man natürlich beachten muss, ist, dass such$ und loesch$ die selbe Länge haben müssen. Sonst gibst wohl Stress mit der Schleife
EDIT (die dritte und hoffentlich die letzte):
Inzwischen mag ich meinen Code überhaupt nicht mehr. Das was mein Code vergleichsweise kompliziert und nicht zu durchschauen macht, macht eine einfache FOR..NEXT-Schleife mindestens genauso gut. Schade...
 _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 30.03.2005, 20:35 Titel: |
|
|
jb hat Folgendes geschrieben: | Wenn du die genaue Position, an der z.B. ein "!" ist, wissen willst, musst du schon eine eigene Routine bauen. |
Falsch! INSTR liefert exakt die Position des gefundenen Strings zurück, womit keine eigenen Routinen nötig sind. Falls der String nicht gefunden wurde, dann wird 0 zurückgeliefert.
Weitere Details in der QB-Online-Hilfe zu INSTR(). _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 30.03.2005, 21:07 Titel: |
|
|
Huuups .
Wusste ich gar nicht. Wollte keinen Müll erzählen, sorry!!!
jb |
|
Nach oben |
|
 |
|