Czy w Delphi istnieje wydajna funkcja wyszukiwania całego słowa?
W Delphi 2009 lub nowszym (Unicode) są jakieś wbudowane funkcje lub małe procedury napisane gdzieś, które wykonają dość wydajne wyszukiwanie całego słowa, w którym podaje się ograniczniki definiujące słowo, np .:
function ContainsWord(Word, Str: string): boolean;
const { Delim holds the delimiters that are on either side of the word }
Delim = ' .;,:(){}"/\<>!?[]'#$91#$92#$93#$94'-+*='#$A0#$84;
gdzie:
Word: string; { is the Unicode string to search for }
Str: string; { is the Unicode string to be searched }
Potrzebuję tego tylko, aby zwrócić wartość true lub false, jeśli „Słowo” znajduje się w ciągu.
Musi być gdzieś coś, ponieważ standardowa funkcja Znajdź Dialog ma „Dopasuj tylko całe słowo” jako jedną z jego opcji.
Jak to normalnie (lub najlepiej) jest realizowane?
Wniosek:
Odpowiedź RRUZ była idealna. Procedura SearchBuf była właśnie tym, czego potrzebowałem. Mogę nawet przejść do procedury StrUtils, wyodrębnić kod i zmodyfikować go, aby pasował do moich wymagań.
Zaskoczyło mnie, że SearchBuf nie szuka najpierw słowa, a następnie szuka ograniczników. Zamiast tego przechodzi przez znaki łańcucha po jednym szukając ogranicznika. Jeśli go znajdzie, sprawdza ciąg i inny ogranicznik. Jeśli go nie znajdzie, szuka innego ogranicznika. Ze względu na wydajność, to bardzo mądre!