Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Cari Semua Kejadian Subrentetan Dalam Rentetan dalam C#?

Bagaimanakah Saya Boleh Cari Semua Kejadian Subrentetan Dalam Rentetan dalam C#?

Susan Sarandon
Lepaskan: 2024-12-30 01:59:08
asal
363 orang telah melayarinya

How Can I Find All Occurrences of a Substring Within a String in C#?

Mencari Semua Kedudukan Subrentetan Dalam Rentetan Yang Lebih Besar dalam C#

Masalah:

Memandangkan rentetan yang besar, anda perlu mengenal pasti dan menyimpan kedudukan semua kejadian subrentetan tertentu dalam rentetan itu. Sebagai contoh, jika subrentetan ialah "ekstrak"(me,i-have lot. of]tanda baca" muncul pada permulaan dan tengah rentetan yang lebih besar, kedua-dua kejadian harus ditempatkan dan kedudukan indeksnya ditambahkan pada senarai, menghasilkan senarai yang mengandungi 0 dan indeks kejadian tengah.

Penyelesaian:

Kod yang disediakan menggunakan kaedah IndexOf, yang boleh digunakan untuk mencari kejadian pertama subrentetan dalam rentetan Walau bagaimanapun, kaedah ini hanya mengembalikan padanan pertama Untuk mencari semua kejadian, gelung boleh digunakan untuk memanggil IndexOf berulang kali bermula dari kedudukan selepas padanan sebelumnya sehingga tiada lagi padanan ditemui Kedudukan indeks kemudiannya boleh ditambah ke senarai yang diingini.

Berikut ialah versi diperbetulkan bagi yang disediakan. kod:

List<int> inst = new List<int>();
int index = 0;
while (index < source.Length)
{
    int src = source.IndexOf("extract\"(me,i-have lots. of]punctuation", index);
    if (src == -1)
        break;  // No more occurrences found
    inst.Add(src);
    index = src + 40; // Advance the search index to beyond the current match
}
Salin selepas log masuk

Pendekatan Alternatif:

Penyelesaian lain melibatkan penggunaan kaedah sambungan untuk kemudahan yang lebih mudah >

public static IEnumerable<int> AllIndexesOf(this string str, string value)
{
    if (String.IsNullOrEmpty(value))
        throw new ArgumentException("the string to find may not be empty", "value");
    for (int index = 0;; index += value.Length)
    {
        index = str.IndexOf(value, index);
        if (index == -1)
            break;
        yield return index;
    }
}
Salin selepas log masuk
Menggunakan kaedah sambungan ini, anda boleh mencari dengan mudah semua kejadian subrentetan sebagai berikut:

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cari Semua Kejadian Subrentetan Dalam Rentetan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan