Rumah > pembangunan bahagian belakang > Golang > 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
Lepaskan: 2024-11-02 10:34:02
asal
230 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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