Einzelnen Beitrag anzeigen

Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#7

Re: Pos() nur für ganze wörter

  Alt 23. Jun 2005, 20:50
Delphi-Quellcode:
function PosExt(SearchString: string; str: string);
begin
  result := pos(SearchString, str);
  while ind > 0 do
    if ((result = 1) or (not (SearchString[result - 1] in ['A'..'Z', 'a'..'z']))) and
       ((result + length(SearchString) > length(str)) or (not (SearchString[result + length(SearchString)] in ['A'..'Z', 'a'..'z']))) then
      exit
    else begin
      delete(str, 1, length(SearchString));
      result := pos(SearchString, str);
    end;
end;
Der Code ist jetzt mal so heruntergetippt, also ne wahrscheinlichkeit von 25% dass er funktioniert
Das Prinzip ist jedenfalls mal, dass man den String mit der Pos-Funktion sucht. Anschließend schaut man, ob das Zeichen davor und danach ein Buchstabe ist. Wenn das beide male nicht der Fall ist, ist es ein einzelstehendes Wort. Damit jedoch nicht beim Suchstring 'haus' und str='nach hause ist im haus' nach dem ersten (fehlgschlagenen versuch 'hause') die funktion 0 zurück gibt geht das ganze in die schleife.
Falls dann das Wort alleine wirklich nie in str enthalten ist, gibt die Funktion 0 zurück


Ich send das jetzt trotzdem mal ab, weil ichs nich um sonst geschrieben haben will
@Airblader: Bei der Funktion gäbs Probs, wenn nach dem Wort gleich ein . oder was anderes als ein Leerzeichen ist
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat