Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencapai Pengisihan Tidak Peka Huruf dalam Go dengan sort.Strings()?

Bagaimana untuk Mencapai Pengisihan Tidak Peka Huruf dalam Go dengan sort.Strings()?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-02 10:34:02124semak imbas

How to Achieve Case-Insensitive Sorting in Go with sort.Strings()?

Isih Tidak Peka huruf besar dalam Golang dengan isihan.Strings()

Dalam Python, pengisihan tidak peka huruf besar-besaran selalunya dicapai menggunakan parameter utama fungsi sorted(), yang membenarkan fungsi perbandingan tersuai. Walau bagaimanapun, dalam isihan Go.Strings(), tiada persamaan langsung.

Untuk melakukan pengisihan tidak peka huruf besar-kecil dalam Go, kami boleh memanfaatkan keupayaan penghirisan Go yang berkuasa. Satu pendekatan ialah mencipta fungsi perbandingan tersuai yang membandingkan versi huruf kecil rentetan:

<code class="go">sort.Strings(data, func(i, j int) bool {
    return strings.ToLower(data[i]) < strings.ToLower(data[j])
})</code>

Kaedah ini berfungsi dengan baik untuk set data kecil, tetapi ia boleh mengakibatkan peruntukan rentetan yang berlebihan untuk input yang besar.

Untuk pengisihan yang lebih cekap, kita boleh membandingkan rune rentetan demi rune sambil mengabaikan kesnya:

<code class="go">func lessLower(sa, sb string) bool {
    for {
        rb, nb := utf8.DecodeRuneInString(sb)
        if nb == 0 {
            return false
        }

        ra, na := utf8.DecodeRuneInString(sa)
        if na == 0 {
            return true
        }

        rb = unicode.ToLower(rb)
        ra = unicode.ToLower(ra)

        if ra != rb {
            return ra < rb
        }

        sa = sa[na:]
        sb = sb[nb:]
    }
}

sort.Strings(data, func(i, j int) bool {
    return lessLower(data[i], data[j])
})</code>

Pendekatan ini mengelakkan peruntukan yang tidak perlu dengan membandingkan terus rune rentetan.

Untuk fleksibiliti lanjut dan pengisihan khusus bahasa, pertimbangkan untuk menggunakan pakej penyusun, yang menyediakan tempat dan peraturan penyusunan khusus bahasa.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pengisihan Tidak Peka Huruf dalam Go dengan sort.Strings()?. 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