Suchen eines Strings in einem String

Fragen zu Programmiersprachen und Software für den Hive und die Propellerchips
Antworten
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Suchen eines Strings in einem String

Beitrag 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
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Suchen eines Strings in einem String

Beitrag 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).
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
TuxFan
Beiträge: 1022
Registriert: So 6. Sep 2009, 11:18

Re: Suchen eines Strings in einem String

Beitrag 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.
Wunder gibt es immer wieder.......
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Suchen eines Strings in einem String

Beitrag 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...
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: Suchen eines Strings in einem String

Beitrag 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.
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Suchen eines Strings in einem String

Beitrag von yeti »

PIC18F2550 hat geschrieben:Für Gansblinde eben. :SCHREIEN
Sowas kann ich auch primstens.
Willkommen im Club!
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Antworten