Ich habe dieses String-Array:
string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
Ich möchte feststellen, ob stringArray
enthält value
. Wenn ja, möchte ich seine Position im Array lokalisieren.
Ich möchte keine Schleifen verwenden. Kann jemand vorschlagen, wie ich das machen könnte?
Array.IndexOf
sich die Kapitalisierung? Tut"text1" == "TEXT1"
?Array.IndexOf
Gibt−1
nur zurück, wenn der Index 0-begrenzt ist. Dieser Fall würde brechen, seien Sie sich also bewusst!var a = Array.CreateInstance(typeof(int),new int[] { 2 }, new int[] { 1 }); a.SetValue(1, 1); Console.WriteLine(Array.IndexOf(a, 26)); // 0
quelle
Wir können auch verwenden
Exists
:quelle
char
die nicht konvertiert werden kannSystem.Predicate<char>
EDIT: Ich hatte nicht bemerkt, dass Sie die Position auch brauchten. Sie können
IndexOf
einen Wert eines Array-Typs nicht direkt verwenden, da er explizit implementiert ist. Sie können jedoch Folgendes verwenden:(Dies ähnelt dem Aufrufen
Array.IndexOf
gemäß Darins Antwort - nur ein alternativer Ansatz. Mir ist nicht klar, warum dies explizit in Arrays implementiert ist , aber egal ...)IList<T>.IndexOf
quelle
if (months.Contains(model.Month))
Sie können verwenden
Array.IndexOf()
- beachten Sie, dass -1 zurückgegeben wird, wenn das Element nicht gefunden wurde und Sie diesen Fall behandeln müssen.quelle
Sie können es so versuchen ... Sie können Array.IndexOf () verwenden, wenn Sie die Position auch wissen möchten
quelle
IMO Der beste Weg, um zu überprüfen, ob ein Array einen bestimmten Wert enthält, ist
System.Collections.Generic.IList<T>.Contains(T item)
die folgende Methode:Vollständiges Codebeispiel:
T[]
Arrays implementieren privat einige Methoden vonList<T>
wie Count and Contains. Da es sich um eine explizite (private) Implementierung handelt, können Sie diese Methoden nicht verwenden, ohne zuerst das Array zu übertragen. Dies funktioniert nicht nur für Zeichenfolgen. Mit diesem Trick können Sie überprüfen, ob ein Array eines beliebigen Typs ein Element enthält, solange die Klasse des Elements IComparable implementiert.Denken Sie nicht an alle
IList<T>
Methoden auf diese Weise funktionieren. Der Versuch, dieIList<T>
Add-Methode für ein Array zu verwenden , schlägt fehl.quelle
Sie können dies versuchen, es sucht nach dem Index, der dieses Element enthält, und es setzt die Indexnummer als int. Dann prüft es, ob das int größer als -1 ist. Wenn es also 0 oder mehr ist, bedeutet dies, dass es ein solches gefunden hat ein Index - da Arrays auf 0 basieren.
quelle
quelle
Ich habe eine Erweiterungsmethode zur Wiederverwendung erstellt.
Wie man es nennt:
quelle
position
wonach das OP fragt?quelle
Die einfachste und kürzere Methode wäre die folgende.
quelle
Contains
Methode haben Sie diese Informationen nicht