Dans Delphi 2009 ou version ultérieure (Unicode), sont-il des fonctions intégrées ou petites routines écrites quelque part qui va faire un mot entier raisonnablement efficace de recherche où vous fournissez les délimiteurs qui définissent le mot, par exemple:Existe-t-il une fonction efficace de recherche de mots entiers dans Delphi?
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;
où:
Word: string; { is the Unicode string to search for }
Str: string; { is the Unicode string to be searched }
Je ne besoin de ceci pour retourner une valeur true ou false si le « mot » est dans la chaîne.
Il doit y avoir quelque chose pour quelque part, parce que la boîte de dialogue de recherche standard a "Match mot entier seulement" comme une de ses options.
Comment est-ce normalement (ou le mieux) mis en œuvre?
Conclusion:
réponse de RRUZ était parfait. La routine SearchBuf était exactement ce dont j'avais besoin. Je peux même aller dans la routine StrUtils, extraire le code, et le modifier pour répondre à mes besoins.
J'ai été surpris de constater que SearchBuf ne cherche pas d'abord le mot, puis vérifie les délimiteurs. Au lieu de cela, il passe par les caractères de la chaîne un à la fois à la recherche d'un délimiteur. S'il en trouve un, il vérifie la chaîne et un autre délimiteur. S'il ne le trouve pas, il cherche alors un autre délimiteur. Par souci d'efficacité, c'est très intelligent!
Nice! Vous avez maintenant posté votre solution sur votre propre blog à l'adresse: http://theroadtodelphi.wordpress.com/2009/11/05 et je l'ai trouvé juste après avoir fait d'autres recherches. Merci pour les informations supplémentaires que vous fournissez ici. – lkessler
'ExistWordInString ('Delphi', 'Delphi' [soWholeWord, soDown])' échoue. Voir [SearchBuf soWholeWord sortie inattendue] (http://stackoverflow.com/q/25877986/576719). –