118 votes

Est chaîne en tableau ?

Quelle serait la meilleure façon de regarder dans un string[] pour voir si elle contient un élément. C'était mon premier coup. Mais peut-être y a-t-il quelque chose que je néglige. La taille du tableau ne sera pas supérieure à 200 éléments.

 bool isStringInArray(string[] strArray, string key)
{
    for (int i = 0; i <= strArray.Length - 1; i++)
        if (strArray[i].ToString() == key)
            return true;
    return false;
}
 

234voto

Dave Markle Points 44637

Utilisez simplement la méthode Contains () déjà intégrée:

 using System.Linq;

//...

string[] array = { "foo", "bar" };
if (array.Contains("foo")) {
    //...
}
 

28voto

Gabriel McAdams Points 22323

Je sais que c'est vieux, mais je voulais que les nouveaux lecteurs de savoir qu'il ya une nouvelle méthode pour ce faire l'utilisation de génériques et les méthodes d'extension.

Vous pouvez lire mon blog pour voir plus d'informations sur la façon de le faire, mais l'idée principale est ceci:

Par l'ajout de cette méthode d'extension de votre code:

public static bool IsIn<T>(this T source, params T[] values)
{
    return values.Contains(source);
}

vous pouvez effectuer votre recherche comme ceci:

string myStr = "str3"; 
bool found = myStr.IsIn("str1", "str2", "str3", "str4");

Il fonctionne sur n'importe quel type (aussi longtemps que vous créez une bonne méthode equals). Tout type de valeur pour vous.

12voto

Noldorin Points 67794

Vous recherchez simplement la fonction Array.Exists (ou la méthode d'extension Contains si vous utilisez .NET 3.5, ce qui est légèrement plus pratique).

8voto

Will Points 76760

Linq (pour les S & G):

 var test = "This is the string I'm looking for";
var found = strArray.Any(x=>x == test);
 

ou, selon les besoins

 var found = strArray.Any(
    x=>x.Equals(test, StringComparison.OrdinalIgnoreCase));
 

6voto

Andrew Hare Points 159332

Le tableau est-il trié? Si c'est le cas, vous pouvez effectuer une recherche binaire . Voici l'implémentation .NET également. Si le tableau est trié, une recherche binaire améliorera les performances par rapport à toute solution itérative.

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