Problem mit string.
Übersicht

![]() |
Dusselchen14Betreff: Problem mit string. |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe ein theoretisch einfach zu lösendes problem, an dem ich schon seit Stunden hänge:
Nehmen wir an ich habe einen string mit einer unbekannten Anzahl von Name und vor und nach jedem Namen steht ein ".". Also z.b. so: ".Hannah..Horst..Heiko." Und ich möchte, dass am Ende einer Repeat-Schleife zuerst m$="Hannah" ist dann im nächsten duchlauf m$="Horst" (usw.) und dass,wenn alle namen durchgegangen sind die Schleife Verlassen wird. Ich weiss nicht ganz wie ich das bewerkstelligen soll. Die befehle instr, left,right usw. sind mir natürlich alle Bekannt^^ Einer der mindestens 20 Versuche wäre das: Code: [AUSKLAPPEN] var$=".nina..hannah..jennifer."
Repeat p1 = Instr(var$, "..",p1+1) If p1>0 Then m$ = Mid$(var$, p1-p2+2,p1) p2=p1 Print m$ EndIf Until p1=0 Print "fertig" WaitKey End Bitte nicht lachen^^ und danke^^ |
||
![]() |
Duempel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe das so gelöst:
Code: [AUSKLAPPEN] var$=" .nina..hannah..jennifer..jan..karl..klaus."
Repeat If word = 0 Then pos1 = Instr(var,".",pos2+1) word = 1 Else pos2 = Instr(var,".",pos1+1) word = 0 m$ = Mid(var,pos1+1,pos2-pos1-1) Print m End If Until pos1 = 0 Print "Fertig!" WaitKey End Wenn word = 0 ist wird nach der Anfangsposition des neuen Wortes gesucht. Sobald der Wert auf 1 gesetzt wird, wird nach der Endposition des Wortes gesucht, das Wort wird in die Variable m geschrieben und der Wert von word wird wieder auf 0 gesetzt, damit nach einem neuen Wort gesucht werden kann. Du musst aber aufpassen, dass du nach dem letzten Wort auch einen Punkt setzt, da sonst theoretisch der Wert von pos1 nie auf 0 gesetzt wird und die Schleife dann nichtmehr endet. Jan |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
du brauchst gar net em anfang und am ende einen punkt zu setzten... am ende reicht schon... also :
txt$ = "Hanna.Henri.Heins." Und dann mit Instr ![]() Code: [AUSKLAPPEN] Global txt$ = "Hanna.Henri.Heins.Moritz.Freddy."
Print "String : "+txt$ ;Jetzt einzelne Namen anzeigen : Repeat Name$ = Get() If Name$ <> "" Print "Name : "+Name$ Until Name$ = "" Print "-Fertig-" WaitKey() End Function Get$() punkt_pos = Instr(txt$,".") ;Position des nächsten Punktes herausfinden wort$ = Mid(txt$,1,punkt_pos-1) ;wort VOR dem punkt auslesen txt$ = Mid(txt$,punkt_pos+1,Len(txt$)) ;txt auf alles bis auf den ausgelesenen Namen und den punkt wieder abspeichern Return wort$ ;Namen wiedergeben End Function Ist nicht so kompliziert und spart auch rechen zeit (zwar minimal aber bei vielen berechnungen merkt mans doch) mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Dusselchen14 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Duempel
Hey, Danke. warum bin ich da nicht von selbst drauf gekommen?^^ @ToeB Schon klar, aber in dem fall muss ich es mit 2 Punkten machen. weil Das so in den Dateien steht mit denen ich Arbeite aber Danke. |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist doch ganz klar ein Fall für nwort
(Diese Funktion ist standardmäßig mit Leerzeichen als Trennzeichen eingestellt) Der Vorteil ist, das beliebig viele Trennzeichen (in deinem Fall Punkte) zwischen den Wörtern sein können. |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group