86 votes

Comment rechercher une chaîne dans un tableau de chaînes

Je dois rechercher une chaîne de caractères dans le tableau de chaînes de caractères. Je ne veux pas utiliser de boucle dans le tableau.

string [] arr = {"One","Two","Three"};

string theString = "One"

Je dois vérifier si la variableString est présente dans arr.

139voto

Marc Gravell Points 482669

Eh bien, il faut bien chercher, et le bouclage est plus efficace que la récursion (puisque la récursion en bout de queue n'est pas complètement implémentée)... donc si vous ne voulez simplement pas boucler vous-même, alors l'un ou l'autre :

bool has = arr.Contains(var); // .NET 3.5

ou

bool has = Array.IndexOf(arr, var) >= 0;

Pour plus d'informations : éviter les noms comme var - il s'agit d'un mot-clé en C# 3.0.

84voto

Tamir Points 1314

Chaque méthode, mentionnée plus haut, effectue un bouclage interne ou externe, donc la façon de l'implémenter n'est pas vraiment importante. Voici un autre exemple de recherche de toutes les références de la chaîne cible

       string [] arr = {"One","Two","Three"};
       var target = "One";
       var results = Array.FindAll(arr, s => s.Equals(target));

12 votes

Array.Exists() est meilleur je pense.

0 votes

C'est la réponse appropriée pour filtrer un tableau avec un terme de recherche.

29voto

ZombieSheep Points 18967

Doit-il s'agir d'une chaîne[] ? Une List<String> vous donnerait ce dont vous avez besoin.

List<String> testing = new List<String>();
testing.Add("One");
testing.Add("Two");
testing.Add("Three");
testing.Add("Mouse");
bool inList = testing.Contains("Mouse");

11voto

Sharp Coders Points 184

C'est assez simple. J'utilise toujours ce code pour rechercher une chaîne de caractères dans un tableau de chaînes de caractères.

string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
int pos = Array.IndexOf(stringArray, value);
if (pos > -1)
{
    return true;
}
else
{
    return false;
}

5voto

VolkerK Points 54118

Chaque classe implémentant IList possède une méthode Contient(Objet valeur) . Et il en va de même pour System.Array.

0 votes

Notez qu'avec les conteneurs génériques 2.0, il s'agit de ICollection<T> ; même idée cependant

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X