![]() |
Pos() nur für ganze wörter
hi,
kennt jemand eine funktion wie Pos, die aber nur die stelle zurückgibt, wenn es sich um ein einzelnes wort handelt? also wenn ich mit Pos("blaHALLObla", 'HALLO') suche, findet er ja eine stelle. aber das soll eine "erweiterte pos funktion" nicht. die sollte das dann aber in solch einem string finden PosExt^^("bla HALLO bla", 'HALLO') wisst ihr was ich meine? gibts da was in delphi? wenn nicht, habt ihr einen eleganten ansatz? mir fällt nämlich keiner ein^^ |
Re: Pos() nur für ganze wörter
dann musst du eben mit PosEx suchen und prüfen ob vor der fundstelle eine komma, leerzeichen etc. steht, wenn nicht mit posex das näcshte vorkommen suchen etc.
|
Re: Pos() nur für ganze wörter
na gut wenns net anders geht besorg ich mir halt die PosEx. mein D6 Enter hat die PosEx nämlich noch net
|
Re: Pos() nur für ganze wörter
ehmm versuch doch mal so :
Delphi-Quellcode:
dies dann natürlich noch in die copy() funktion mit reinpacken:
i:=pos(string,'Suchwort')+Length('Suchwort');
Delphi-Quellcode:
und dann halt vergleichen
copy(string,pos(string,'Suchwort'),i); ...
Sicher nicht die beste lösung aber ne möglichkeit Grüße Sven |
Re: Pos() nur für ganze wörter
Versteh ich an der Frage was falsch, oder dürfte
Delphi-Quellcode:
reichen?
Pos('Irgendwas HALLO bla', ' HALLO ');
air |
Re: Pos() nur für ganze wörter
Ein weiterer Lösungansatz wären
![]() |
Re: Pos() nur für ganze wörter
Delphi-Quellcode:
Der Code ist jetzt mal so heruntergetippt, also ne wahrscheinlichkeit von 25% dass er funktioniert :stupid:
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; 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 :mrgreen: @Airblader: Bei der Funktion gäbs Probs, wenn nach dem Wort gleich ein . oder was anderes als ein Leerzeichen ist ;) |
Re: Pos() nur für ganze wörter
danke :)
werds probieren |
Re: Pos() nur für ganze wörter
... und weil wir in Deutschland sind, nimmst du am besten statt
Delphi-Quellcode:
eine der Funktionen
ch in ['A'..'Z', 'a'..'z']
Delphi-Quellcode:
IsCharAlpha(ch) oder
IsCharAlphaNumeric(ch) |
Re: Pos() nur für ganze wörter
...eine der Funktionen
Delphi-Quellcode:
Wo sind denn die ?
IsCharAlpha(ch) oder
IsCharAlphaNumeric(ch) |
Re: Pos() nur für ganze wörter
Zitat:
Zitat:
![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz