Meilleure façon de savoir si une chaîne de caractères en une liste (sans les génériques)
Je veux faire quelque chose comme ceci:
Result = 'MyString' in [string1, string2, string3, string4];
Cela ne peut pas être utilisé avec des cordes et je ne veux pas faire quelque chose comme ceci:
Result = (('MyString' = string1) or ('MyString' = string2));
Aussi je pense que la création d'une StringList pour faire juste cela est trop complexe.
Est-il un autre moyen pour y parvenir?
Grâce.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser AnsiIndexText(const AnsiString Atexte, const tableau de chaîne de AValues):integer ou MatchStr(const Atexte: string; const AValues: tableau de string): Boolean;
Quelque chose comme
ou
Note
AnsiIndexText
dispose insensiblement etMatchStr
est sensible à la casse, donc je suppose que cela dépend de votre utilisationEDIT: 2011-09-3: Juste trouvé cette réponse et je pensais que je voudrais ajouter une remarque que, dans Delphi 2010, il est également un
MatchText
la fonction qui est la même queMatchStr
, mais insenstive. -- LarrySysUtils
StrUtils
Le code par Burkhard fonctionne, mais itère inutilement sur la liste, même si une correspondance est trouvée.
Meilleure approche:
Voici une fonction qui fait le travail:
En fait, vous ne comparez MyString avec chaque chaîne de caractères dans les Chaînes. Dès que vous trouvez un correspondant, vous pouvez sortir de la boucle for.
Vous pouvez essayer ceci: