Delphi 2009以降(Unicode)には、単語を定義する区切り文字を提供する、適度に効率的な単語全体の検索を実行する組み込み関数または小さなルーチンがどこかに記述されていますか。
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;
どこ:
Word: string; { is the Unicode string to search for }
Str: string; { is the Unicode string to be searched }
「Word」が文字列に含まれている場合にのみ、trueまたはfalseの値を返すためにこれが必要です。
標準の検索ダイアログにはオプションの1つとして「単語全体を一致させる」があるため、これにはどこかに何かがあるはずです。
これは通常(または最良の)実装方法ですか?
結論:
RRUZの答えは完璧でした。SearchBufルーチンはまさに私が必要としていたものでした。StrUtilsルーチンに移動してコードを抽出し、要件に合うように変更することもできます。
SearchBufが最初に単語を検索してから、区切り文字をチェックしないことに驚いた。代わりに、文字列の文字を1つずつ調べて、区切り文字を探します。1つが見つかった場合は、文字列と別の区切り文字をチェックします。見つからない場合は、別の区切り文字を探します。効率のために、それは非常に賢いです!