Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh mencari semua kejadian subrentetan dalam rentetan yang lebih besar dalam C#?

Bagaimanakah saya boleh mencari semua kejadian subrentetan dalam rentetan yang lebih besar dalam C#?

Barbara Streisand
Lepaskan: 2024-12-28 22:52:15
asal
675 orang telah melayarinya

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

Mencari Semua Kedudukan Subrentetan dalam Rentetan Lebih Besar dalam C#

Apabila bekerja dengan rentetan besar, mencari semua kejadian subrentetan tertentu boleh menjadi penting untuk penghuraian dan analisis data. Artikel ini menangani cabaran mencari semua kejadian sedemikian dan menyimpan indeksnya dalam senarai.

Pernyataan Masalah

Anda mempunyai rentetan besar yang perlu anda analisis. Dalam rentetan ini, anda perlu mengenal pasti dan menyimpan kedudukan setiap kejadian subrentetan tertentu. Mari kita andaikan contoh rentetan ialah "ekstrak"(saya,i-mempunyai banyak. bagi]tanda baca." Anda ingin mencari semua kemunculan subrentetan ini dalam rentetan yang lebih besar dan menambah indeksnya pada senarai.

Resolusi

Kaedah 1:

Kaedah IndexOf dalam C# boleh digunakan untuk mencari kejadian pertama subrentetan Walau bagaimanapun, untuk mencari semua kejadian, kita perlu menggunakan gelung untuk mengulang melalui rentetan dan terus mencari sehingga tiada lagi kejadian ditemui.

Teknik ini boleh. dipertingkatkan dengan menggunakan kaedah sambungan untuk menjadikan kod lebih ringkas Berikut ialah kaedah sambungan contoh:

public static List<int> AllIndexesOf(this string str, string value) {
    if (String.IsNullOrEmpty(value))
        throw new ArgumentException("the string to find may not be empty", "value");
    List<int> indexes = new List<int>();
    for (int index = 0;; index += value.Length) {
        index = str.IndexOf(value, index);
        if (index == -1)
            return indexes;
        indexes.Add(index);
    }
}
Salin selepas log masuk

Kaedah 2:

Sebagai alternatif, iterator juga boleh digunakan untuk menghasilkan indeks secara berurutan:

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

Kedua-dua kaedah ini boleh ditambah dengan mudah pada mana-mana objek rentetan, menjadikannya mudah untuk mencari semua subrentetan positions. Sebagai contoh, baris berikut akan menemui semua kemunculan subrentetan "foo" dalam rentetan "fooStringfooBar":

List<int> indexes = "fooStringfooBar".AllIndexesOf("foo");
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah saya boleh mencari semua kejadian subrentetan dalam rentetan yang lebih besar 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