Seite 1 von 1

Suchen eines Strings in einem String

Verfasst: Do 22. Nov 2018, 14:56
von PIC18F2550
Hallo,
bei strcomp(@Str1, @Str2) sind beide Strings gleichlang und haben die gleiche Zeichenfolge.

Ich suche aber so was:

pos := strcomp(@Str1, @Str2)

Der String @Str2 wurde an Position n in @Str1 gefunden.

gibt es da was? Ich denke da muss ich was machen.

Aus disen Teilen müsste sich was machen lassen

Code: Alles auswählen

''PRI os_cmdinput | charc                                 'sys: stringeingabe eine zeile
''funktionsgruppe               : sys
''funktion                      : stringeingabe eine zeile
''eingabe                       : -
''ausgabe                       : -
''variablen                     : tib     - eingabepuffer zur string
''                              : tibpos  - aktuelle position im tib
  ....
  tibpos := 0                                           'tibposition auf anfang setzen <<== in INNI

  ....
  repeat until (charc := com.rxcheck) == $0D            'Serielle daten einlesen bis return <<======= 
    if (tibpos + 1) < OS_TIBLEN                         'zeile noch nicht zu lang?
          tib[tibpos++] := charc                        'zeichen speichern
  tib[tibpos] := 0                                      'string abschließen

''PRI os_cmdint                                           'sys: kommandointerpreter
''funktionsgruppe               : sys
''funktion                      : kommandointerpreter; zeichenkette ab tibpos wird als kommando interpretiert
''                              : tibpos wird auf position hinter token gesetzt
''eingabe                       : -
''ausgabe                       : -
''variablen                     : tib     - eingabepuffer zur string
''                              : tibpos  - aktuelle position im tib

if tib[tibpos]
  repeat                                                'kommandostring kopieren
    cmdstr[tibpos] := tib[tibpos]                       
    tibpos++
  until (tib[tibpos] == ios#CHAR_SPACE) or (tib[tibpos] == 0) 'wiederholen bis leerzeichen oder stringende
  cmdstr[tibpos] := 0                                   'kommandostring abschließen
  tibpos := 0                                           'tastaturpuffer zurücksetzen
  tib[0] := 0

''PRI os_cmdexec(stradr)                                  'sys: kommando ausführen
{{os_smdexec - das kommando im übergebenen string wird als kommando interpretiert
  stradr: adresse einer stringvariable die ein kommando enthält}}
if     strcomp(@cmdstr,@cmd14)                           'mkdir - verzeichnis erstellen
       ....
elseif strcomp(@cmdstr,@cmd15)                           'rename - datei/verzeichnis umbenennen
       ....
elseif strcomp(@cmdstr,@cmd16)                           'format - sd-card formatieren
      ....

DAT ''------------------------------------------------- Kommandostrings
cmd14   byte  "mkdir",0
cmd15   byte  "rename",0
cmd16   byte  "format",0

Re: Suchen eines Strings in einem String

Verfasst: Do 22. Nov 2018, 18:08
von yeti
Schau Dir mal "findString(stringToSearch, stringToFind)" in [OBEX] ASCII0_STREngine_1.spin an.

Das liefert zwar die Adresse des zu findenden Strings im Gesamtstring, aber das auf Zurückgeben der Position umstricken ist simpel (z.B. Adressendifferenz zwischen Fundstelle und Gesamtstring).

Re: Suchen eines Strings in einem String

Verfasst: Do 22. Nov 2018, 18:11
von TuxFan
Moin moin!
Kuck an, war Yeti schneller :
Schau mal in dieser Bibliothek : http://obex.parallax.com/sites/default/ ... ine_1.spin
so mittig im Programm gibt es "PUB findString(.....)"
Die lib finde ich sehr hilfreich.
Gruß
TuxFan

PS.: Ich glaube die Addresse ist die Position des gesuchten Strings. Beginn ist glaub ich 0. Ist jetzt auch wieder ein paar tage her das ich das benutzt hab.

Re: Suchen eines Strings in einem String

Verfasst: Do 22. Nov 2018, 18:24
von yeti
TuxFan hat geschrieben:Kuck an, war Yeti schneller
Ich hab bei ein paar erfolglosen Versuchen das "mal eben schnell" selbst zusammenzutippern feststellen müssen, daß ich irgendwie heute nicht in Strings-mit-Spin-Stimmung war, fand dann auch nicht schnell genug sowas in den TriOS-Quellen und erst dann fiel mir wieder die OBEX ein...

...nich wirklich mein Tag heute... hatte vermutlich 'ne Überdosis Real-Life...

Re: Suchen eines Strings in einem String

Verfasst: Do 22. Nov 2018, 18:51
von PIC18F2550
Maaaan das Teil hab ich mir heute in der Pause angesehen.
Hier mit bestelle ich mir eine gelbe Armbinde mit 3 schwarzen Gänsen.

Für Gansblinde eben. :SCHREIEN

Danke euch beiden.

Re: Suchen eines Strings in einem String

Verfasst: Do 22. Nov 2018, 19:01
von yeti
PIC18F2550 hat geschrieben:Für Gansblinde eben. :SCHREIEN
Sowas kann ich auch primstens.
Willkommen im Club!