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)