Seite 1 von 2

Wörter aus String$ isolieren

Verfasst: 28.08.2010 14:20
von Ironsmurf
Hallo
ich möchte mir eine kleine Schleife programmieren, die aus einem String mit 4 Namen, anhand einer Suchfunktion nur den Namen isoliert der mit dem Suchbegriff übereinstimmt.

String$ = "Max Mustermann, Karl Kugelschreiber, Bernd Bleistift, Frank Filzstift"
Suchstring$ = "Filz"
Gefunden wird der Begriff, angezeigt werden soll aber nur "Frank Filzstift" und nicht
"Max Mustermann, Karl Kugelschreiber, Bernd Bleistift, Frank Filzstift"

Das Programm durchläuft auch vier mal die Schleife, allerdings zeigt er immer nur den ersten Namen an, wo muß der Zähler K für die Schleife eingebaut werden, bei den Befehlen.

Code: Alles auswählen

String$ = "Max Mustermann, Karl Kugelschreiber, Bernd Bleistift, Frank Filzstift"
Suchstring$ = "Filz"

Komma = CountString(String$, ",") : Komma + 1 : Debug Komma ; zählt die Kommas, +1 ergibt die Anzahl der Namen im String

For K = 1 To Komma ; zählt von 1 - 4

Position = FindString(String$, ", ", 1) : Debug Position ; ergibt die Position des ersten gefundenen Kommas
Position - 1 : Debug Position ; -1 ergibt die Anzahl der Zeichen aus der der erste Name besteht
Ergebnis$ = Mid(String$, 1, Position) : Debug Ergebnis$ ; ist der erste Name isoliert "Max Mustermann"
If FindString (Ergebnis$, Suchstring$,1) : EndIf : Debug "Alles klar" ; Stimmt Ergebnis$ mit Suchstring$ überein "Alles klar"
RestString$ = ReplaceString (String$,Ergebnis$, "", 1) ; entfernt "Max Mustermann aus dem String$
RestString = Len(Reststring$) : RestString - 2
Reststring$ = Right (RestString$, RestString) : Debug RestString$
String$ = RestString$ ; nun besteht der String nur noch aus 3 Namen "Karl Kugelschreiber, Bernd Bleistift, Frank Filzstift"

Next
Vielen Dank für eure Hilfe und Mühe :cry:

Re: Wörter aus String$ isolieren

Verfasst: 28.08.2010 14:25
von STARGÅTE
Ich denke StringField() sollte das ganze vereinfachen:

Code: Alles auswählen

String$ = "Max Mustermann, Karl Kugelschreiber, Bernd Bleistift, Frank Filzstift"
Suchstring$ = "Filz"

MaxIndex = CountString(String$, ",")+1
For Index = 1 To MaxIndex
  SubString$ = StringField(String$, Index, ",")
  If FindString(SubString$, Suchstring$, 1)
    Debug Trim(SubString$)
  EndIf
Next

Re: Wörter aus String$ isolieren

Verfasst: 28.08.2010 14:26
von TomS
Benutz Stringfield()

Code: Alles auswählen

String$ = "Max Mustermann, Karl Kugelschreiber, Bernd Bleistift, Frank Filzstift"
Suchstring$ = "Filz"

For k = 1 To CountString(String$, ",")+1
	exploded$ = StringField(String$, k, ",")
	If FindString(exploded$, SuchString$, 1)
		Debug Trim(exploded$)
	EndIf 
Next 

Re: Wörter aus String$ isolieren

Verfasst: 28.08.2010 14:30
von NicTheQuick
StringField() ist dein Freund.

Code: Alles auswählen

Define.s string, suchString


string = "Max Mustermann, Karl Kugelschreiber, Bernd Bleistift, Frank Filzstift"
suchString = "Filz"


Define.i fields, i
Define.s field

fields = CountString(string, ",") + 1

For i = 1 To fields
	field = Trim(StringField(string, i, ","))
	If FindString(field, suchString, 1)
		Debug field
	EndIf
Next
///Edit:

:bounce:

Re: Wörter aus String$ isolieren

Verfasst: 28.08.2010 14:39
von rolaf
Das nenne ich mal ne 3fach Optimal-Hilfe. :allright:
Wollte auch schon posten... :mrgreen:
Drei Ärsche ein Gedanke :wink:

Re: Wörter aus String$ isolieren

Verfasst: 28.08.2010 14:53
von Ironsmurf
Vielen Dank für eure Hilfe :bounce:

Re: Wörter aus String$ isolieren

Verfasst: 28.08.2010 14:56
von STARGÅTE
Wie geil :lol: :lol: :lol:

Vorallem TomS und meins sind ja fast zu 95% gleich ^^

Aber bei TomS muss ich sagen, das CountString(String$, ",")+1 nach dem To zu lassen ist schlecht.
Weil Sachen hinter dem To mit jedem Schleifendurchlauf neu ausgewertet werden.

Somit sollte man immer eine Variable damit füllen und die dann dort angeben wie NicTheQuick und ich.

BTW: Sogar alle haben an das Trim() gedacht >:)

Re: Wörter aus String$ isolieren

Verfasst: 30.08.2010 18:19
von Ironsmurf
Hallo
das mit der Erklärung von FindString funktioniert wunderbar.
Habe nun diese Schleife in mein Programm integriert, jedoch findet er immer nur den ersten Namen und isoliert ihn.
Das sich diese Schleife in einer anderen Schleife befindet, also verschachtelt, vermute ich den Fehler dort, kann ihn jedoch nicht finden.
Wie muß die Schleife aussehen damit es funktioniert ?

Code: Alles auswählen

SortStructuredArray(DVD(), 0, OffsetOf(Movie\Jahr$), #PB_Sort_String)
     PrintN("")
         For index = 1 To 9999
               
 AusgabeProm$=""
               
       AusgabeProm$ = DVD(index)\Star$
            If FindString (LCase(AusgabeProm$),LCase(Servertext$),1)
         
         Komma = CountString(String$, ",") : Komma + 1 : Debug komma
         
For K = 1 To Komma

Schauspieler$ = Trim(StringField(AusgabeProm$, K, ",")) ; vermute hier den Fehler ?

Next

ConsoleColor(15,0)
        Print(" ") : print_s(Schauspieler$) : Print_s(" ° ") ; vermute hier den Fehler ?
             Print (DVD(index)\Jahr$) : Print_S(" ° ")      
                 Print_s (DVD(index)\Name$) : PrintN("")
         
EndIf
          Next

Re: Wörter aus String$ isolieren

Verfasst: 30.08.2010 19:03
von Waldixxl
Hallo
Teste es mal so!
Habe es nicht getestet!

Code: Alles auswählen

SortStructuredArray(DVD(), 0, OffsetOf(Movie\Jahr$), #PB_Sort_String)
     PrintN("")
         For index = 1 To 9999
           AusgabeProm$ = DVD(index)\Star$
           Komma = CountString(AusgabeProm$, ",") : Komma + 1 : Debug komma
           
            For K = 1 To Komma
               Schauspieler$ = Trim(StringField(AusgabeProm$, K, ",")) ; vermute hier den Fehler ?
                If FindString (LCase(Schauspieler$),LCase(Servertext$),1)
                   ConsoleColor(15,0)
                   Print(" ") : print_s(Schauspieler$) : Print_s(" ° ") ; vermute hier den Fehler ?
                   Print (DVD(index)\Jahr$) : Print_S(" ° ")     
                   Print_s (DVD(index)\Name$) : PrintN("")
               EndIf    
            Next
         Next 
mfg
Walter

Re: Wörter aus String$ isolieren

Verfasst: 30.08.2010 19:08
von NicTheQuick
@Ironsmurf:

Ich verstehe nicht, was du eigentlich machen willst. Ein paar mehr Informationen wären sicherlich hilfreich.

Außerdem bekomme ich Augenkrebs, wenn ich deinen uneingerückten Code lese.
In so einem Code habe ich gar keine Lust Fehler zu suchen. Tu doch allen einen Gefallen, gehen in die IDE, drück STRG+A und dann STRG+I. Dann ist alles richtig eingerückt. Dann darfst du deinen Code auch hier posten.