Saya ingin menggunakan C # untuk memeriksa apakah nilai string berisi kata dalam array string. Sebagai contoh,
string stringToCheck = "text1text2text3";
string[] stringArray = { "text1", "someothertext", etc... };
if(stringToCheck.contains stringArray) //one of the items?
{
}
Bagaimana saya bisa memeriksa apakah nilai string untuk 'stringToCheck' berisi kata dalam array?
Jawaban:
di sini adalah bagaimana Anda dapat melakukannya:
UPDATE: Mungkin Anda mencari solusi yang lebih baik .. lihat jawaban @Anton Gogolev di bawah ini yang menggunakan LINQ.
sumber
Begini caranya:
Ini memeriksa apakah
stringToCheck
berisi salah satu dari substring daristringArray
. Jika Anda ingin memastikan bahwa itu berisi semua substring, ubahAny
keAll
:sumber
stringArray.Any(s => s.IndexOf(stringToCheck, StringComparison.CurrentCultureIgnoreCase) > -1)
Coba ini:
Tidak perlu menggunakan LINQ
sumber
stringArray.Any(w => stringToCheck.IndexOf(w) >= 0)
tetapi jawaban Linq menggunakan String.Contains lebih masuk akal, karena itulah yang diminta.Cukup gunakan metode LINQ:
sumber
using System.Linq;
Cara termudah dan sampel.
sumber
sumber
Sesuatu seperti ini mungkin:
sumber
String.Contains
mungkin lebih baik daripadaString.IndexOf
kecuali Anda ingin mengabaikan kasus, karena Microsoft lupa dua argumenString.Contains
Anda harus menulis sendiri. Pertimbangkan:Array.Exists(stringArray, s => stringToCheck.IndexOf(s, StringComparison.OrdinalIgnoreCase) > -1)
Menggunakan Linq dan grup metode akan menjadi cara tercepat dan lebih ringkas untuk melakukan ini.
sumber
Anda dapat menentukan sendiri
string.ContainsAny()
danstring.ContainsAll()
metode Anda. Sebagai bonus, saya bahkan menggunakanstring.Contains()
metode yang memungkinkan untuk perbandingan case-sensitive, dll.Anda dapat menguji ini dengan kode berikut:
sumber
Saya menggunakan yang berikut ini di aplikasi konsol untuk memeriksa argumen
sumber
Saya akan menggunakan Linq tetapi masih bisa dilakukan melalui:
sumber
Mencoba:
sumber
Anda juga dapat melakukan hal yang sama seperti Anton Gogolev menyarankan untuk memeriksa apakah item dalam
stringArray1
pertandingan item distringArray2
:Dan juga semua item di stringArray1 cocok dengan semua item di stringArray2:
sumber
sumber
coba ini, berikut ini contohnya: Untuk memeriksa apakah bidang berisi salah satu kata dalam array. Untuk memeriksa apakah bidang (someField) berisi kata-kata dalam array.
sumber
sumber
Saya menggunakan metode yang mirip dengan IndexOf oleh Maitrey684 dan foreach loop dari Theomax untuk membuat ini. (Catatan: 3 "string" baris pertama hanyalah contoh bagaimana Anda bisa membuat array dan memasukkannya ke dalam format yang sesuai).
Jika Anda ingin membandingkan 2 array, mereka akan dibatasi semi-colon, tetapi nilai terakhir tidak akan memiliki satu setelahnya. Jika Anda menambahkan titik koma ke bentuk string dari array (yaitu a; b; c menjadi a; b; c;), Anda dapat mencocokkan menggunakan "x;" tidak peduli apa pun posisinya:
sumber
bFound disetel ke true jika string yang dicari cocok dengan elemen array 'garis' apa pun.
sumber
Coba ini
Ini akan mengembalikan Anda baris dengan kejadian teks pertama yang Anda cari.
sumber
Jika
stringArray
berisi sejumlah besar panjang string yang bervariasi, pertimbangkan untuk menggunakan Trie untuk menyimpan dan mencari larik string.Ini adalah implementasi dari
Trie
kelasJika semua string
stringArray
memiliki panjang yang sama, Anda akan lebih baik hanya menggunakanHashSet
aTrie
sumber
Solusi sederhana, tidak diperlukan linq apa pun
String.Join (",", array) .Berisi (Nilai + ",");
sumber
sumber
Coba ini, tidak perlu loop ..
sumber
Untuk menyelesaikan jawaban di atas, untuk penggunaan cek IgnoreCase :
sumber
Untuk kasus saya, jawaban di atas tidak berhasil. Saya sedang memeriksa string dalam sebuah array dan menugaskannya ke nilai boolean. Saya memodifikasi jawaban @Anton Gogolev dan menghapus
Any()
metode dan memasukkan bagianstringToCheck
dalamContains()
metode.sumber
Menggunakan metode Find atau FindIndex dari kelas Array :
sumber
Saya menggunakan kode berikut untuk memeriksa apakah string berisi salah satu item dalam array string:
sumber
Text = "matched"
sebanyak yangstringToCheck
mengandung substring daristringArray
. Anda mungkin ingin meletakkanbreak
ataureturn
setelah penugasan.Tiga opsi diperagakan. Saya lebih suka menemukan yang ketiga sebagai yang paling ringkas.
sumber