Saya punya array string ini:
string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
Saya ingin menentukan apakah stringArray
berisi value
. Jika demikian, saya ingin mencari posisinya di array.
Saya tidak ingin menggunakan loop. Adakah yang bisa menyarankan bagaimana saya bisa melakukan ini?
Array.IndexOf
peduli dengan kapitalisasi? Apakah itu"text1" == "TEXT1"
?Array.IndexOf
mengembalikan−1
hanya jika indeks dibatasi 0. Kasus ini akan pecah, jadi waspadalah!var a = Array.CreateInstance(typeof(int),new int[] { 2 }, new int[] { 1 }); a.SetValue(1, 1); Console.WriteLine(Array.IndexOf(a, 26)); // 0
sumber
Kita juga bisa menggunakan
Exists
:sumber
char
tidak dapat dikonversi keSystem.Predicate<char>
EDIT: Saya tidak memperhatikan Anda membutuhkan posisi itu juga. Anda tidak dapat menggunakan
IndexOf
secara langsung pada nilai jenis array, karena itu diterapkan secara eksplisit. Namun, Anda dapat menggunakan:(Hal ini mirip dengan memanggil
Array.IndexOf
sesuai jawaban Darin ini -. Hanya sebuah pendekatan alternatif Tidak jelas bagi saya mengapa ini dilaksanakan secara eksplisit dalam array, tetapi tidak pernah keberatan ...)IList<T>.IndexOf
sumber
if (months.Contains(model.Month))
Anda dapat menggunakan
Array.IndexOf()
- perhatikan bahwa ia akan mengembalikan -1 jika elemen belum ditemukan dan Anda harus menangani kasus ini.sumber
Anda dapat mencoba seperti ini ... Anda dapat menggunakan Array.IndexOf (), jika Anda ingin mengetahui posisinya juga
sumber
IMO cara terbaik untuk memeriksa apakah array berisi nilai yang diberikan adalah dengan menggunakan
System.Collections.Generic.IList<T>.Contains(T item)
metode dengan cara berikut:Contoh kode lengkap:
T[]
array secara pribadi menerapkan beberapa metodeList<T>
, seperti Hitung dan Berisi. Karena ini merupakan implementasi (pribadi) yang eksplisit, Anda tidak akan dapat menggunakan metode ini tanpa terlebih dahulu menggunakan array. Ini tidak hanya berfungsi untuk string - Anda bisa menggunakan trik ini untuk memeriksa apakah array jenis apa pun mengandung elemen apa pun, selama kelas elemen mengimplementasikan IComparable.Perlu diingat tidak semua
IList<T>
metode bekerja dengan cara ini. Mencoba menggunakanIList<T>
metode Tambah pada larik akan gagal.sumber
Anda dapat mencoba ini, mencari indeks yang mengandung elemen ini, dan menetapkan nomor indeks sebagai int, kemudian memeriksa apakah int lebih besar dari -1, jadi jika itu 0 atau lebih, maka itu berarti ditemukan seperti indeks - karena array adalah berbasis 0.
sumber
sumber
Saya membuat metode ekstensi untuk digunakan kembali.
Bagaimana cara menyebutnya:
sumber
position
OP meminta?sumber
Metode paling sederhana dan lebih pendek adalah sebagai berikut.
sumber
Contains
metode ini Anda tidak memiliki informasi ini