Rechercher un tableau de chaînes dans Delphi
Est-il une fonction dans le Delphi standard de la bibliothèque à la recherche de tableaux de chaîne pour une valeur particulière?
par exemple
someArray:=TArray<string>.Create('One','Two','Three');
if ArrayContains(someArray, 'Two') then
ShowMessage('It contains Two');
source d'informationauteur awmross
Vous devez vous connecter pour publier un commentaire.
Il n'y a absolument pas besoin de réinventer la roue. StrUtils.MatchStr fait le travail.
Remarque le paramètre d'ordre de la convention.
Une autre remarque:
MatchStr
est un standardisée nom attribué à cette fonction quelque part entre Delphi 7 et Delphi 2007. Historique du nom estAnsiMatchStr
(convention est la même que dans le reste de RTL: Str/Texte suffixe pour la casse, Ansi préfixe pour MBCS/Locale)vous pouvez utiliser le
TArray.BinarySearch
fonction, qui fait partie des médicaments Génériques.L'unité Collections.vérifier cet échantillon
Remarque: BinarySearch exige que le tableau soit trié.
J'ai écrit un j'ai modélisé d'après l'ancienne
Clipper
AScan
fonction (testé dansXE
). @RRUZ la réponse est plus correct (il y a un existant), mais le mien ne nécessite pas le tableau à trier premier et est assez rapide sur les petits tableaux. (Il fonctionne aussi dans les pré-génériques de versions de Delphi.) J'ai aussi de la surcharge de différents types de tableau - voici les implémentations pourstring
etinteger
:Pour les versions de Delphi qui prennent en charge les génériques, voici une version qui ne nécessite pas le tableau à trier, et qui permet aussi de fournir la fonction de comparaison en cas de besoin:
Interface:
Mise en œuvre
Code de Test: