Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mencari Corak Bertindih dengan Cekap dalam Rentetan Go Tanpa Ungkapan Biasa?

Bagaimanakah Saya Boleh Mencari Corak Bertindih dengan Cekap dalam Rentetan Go Tanpa Ungkapan Biasa?

DDD
DDDasal
2024-12-03 22:53:10511semak imbas

How Can I Efficiently Find Overlapping Patterns in Go Strings Without Regular Expressions?

Mengatasi Corak Bertindih di Golang

Walaupun terdapat batasan ungkapan biasa dalam mengendalikan padanan bertindih, terdapat alternatif untuk mengekstrak corak bertindih di Golang. Walaupun ungkapan kompleks mungkin menggoda, ia sering membawa kepada kerumitan dan ketidakcekapan yang tidak perlu.

Satu pendekatan yang berkesan ialah menggunakan sifat intuitif rentetan.Indeks dan gelung untuk. Sebagai contoh, untuk mencari indeks corak "..#..", anda boleh mengulangi rentetan input menggunakan rentetan.Indeks dan kumpulkan indeks dalam senarai.

input := "...#...#....#.....#..#..#..#......."
idx := []int{}
j := 0
for {
    i := strings.Index(input[j:], "..#..")
    if i == -1 {
        break
    }
    fmt.Println(j)
    idx = append(idx, j+i)
    j += i+1
}
fmt.Println("Indexes:", idx)

Pendekatan ini memudahkan proses pemadanan, menyediakan kawalan yang lebih baik ke atas padanan dan meningkatkan kecekapan dengan mengelakkan operasi ekspresi biasa yang tidak perlu. Sifat mudah gelung menjadikannya mudah untuk mengendalikan pelbagai corak dan kombinasi rentetan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Corak Bertindih dengan Cekap dalam Rentetan Go Tanpa Ungkapan Biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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