Cookies helfen bei der Bereitstellung dieser Website. Durch die Nutzung dieser Website erklären Sie sich damit einverstanden, dass Cookies gesetzt werden. Mehr erfahrenOK

Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

String nach mehreren Begriffen durchsuchen

Uploader:Redakteurnemored
Datum/Zeit:30.07.2014 13:12:22

' Die Funktion durchsucht einen String auf mehrere Suchbegriffe (UND oder ODER) und liefert die erste Fundstelle
' zurueck, bzw. 0, wenn kein Begriff (ODER-Suche) oder nicht alle Begriffe (UND-Suche) gefunden wurde(n).

function such(text as string, suchbegriff() as string, undOder as integer = 0) as integer
  ' text:          zu durchsuchender Text
  ' suchbegriff(): zu suchende Begriffe
  ' undOder:       0: mind. ein Begriff muss vorkommen;  <>0: alle Begriffe muessen vorkommen
  dim as integer position(lbound(suchbegriff) to ubound(suchbegriff)), fund(lbound(suchbegriff) to ubound(suchbegriff))
  dim as integer ersteFundstelle
  for textPos as integer = 0 to len(text)-1
    for begriff as integer = lbound(suchbegriff) to ubound(suchbegriff)
      ' Begriff gefunden - naechster Suchbegriff
      if position(begriff) = len(suchbegriff(begriff)) then continue for
      ' Korrektes Suchzeichen?
      if text[textPos] = suchbegriff(begriff)[position(begriff)] then
        ' gefunden; auf naechstes Zeichen wechseln
        position(begriff) += 1
        if position(begriff) = len(suchbegriff(begriff)) andalso ersteFundstelle = 0 then
          ersteFundstelle = textPos - len(suchbegriff(begriff)) + 2
          ' wenn ODER-Suche, dann Funktion verlassen
          if undOder = 0 then return textPos - len(suchbegriff(begriff)) + 2
        end if
      else
        ' nicht gefunden; auf Anfang des Suchbegriffs zuruecksetzen
        position(begriff) = 0
      end if
    next
  next
  ' UND-Suche: alle Begriffe gefunden?
  if undOder then
    for begriff as integer = lbound(suchbegriff) to ubound(suchbegriff)
      if position(begriff) < len(suchbegriff(begriff)) then return 0
    next
    ' alle Begriffe gefunden
    return ersteFundstelle
  else
    ' keinen Begriff gefunden
    return 0
  end if
end function


'########################
' Anwendungsbeispiel
dim as string zahl(2 to 5)
zahl(2) = "zwei"
zahl(3) = "drei"
zahl(4) = "vier"
zahl(5) = "fuenf"

print such("sieben fuenf dreiundvierzig zweiundachtzig", zahl(), 1)