Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mencapai Pengisihan Senarai Rentetan yang Tidak Peka Huruf dalam Go?

Bagaimana untuk Mencapai Pengisihan Senarai Rentetan yang Tidak Peka Huruf dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-10-28 06:57:29
asal
1036 orang telah melayarinya

How to Achieve Case-Insensitive Sorting of String Lists in Go?

Isih Tidak Peka Huruf menggunakan isihan.Strings() dalam Go

Untuk pengisihan senarai rentetan yang tidak sensitif huruf dalam Go, pertimbangkan untuk menggunakan isihan. Slice(), yang memberikan fleksibiliti yang lebih besar daripada sort.Strings().

Fungsi Tersuai untuk Perbandingan Tidak Peka Huruf

Anda boleh menghantar fungsi tersuai untuk mengisih.Slice () untuk melakukan perbandingan tidak peka huruf besar-besaran. Fungsi berikut menukar rentetan kepada huruf kecil sebelum membandingkannya:

<code class="go">func lowercaseCompare(s1, s2 string) bool {
    return strings.ToLower(s1) < strings.ToLower(s2)
}</code>
Salin selepas log masuk

Menggunakan Fungsi Tersuai

Untuk mengisih senarai data tanpa sensitif huruf menggunakan fungsi tersuai:

<code class="go">sort.Slice(data, lowercaseCompare)</code>
Salin selepas log masuk

Contoh

Pertimbangkan data senarai rentetan := []rentetan{"A", "b", "D", "c"}. Mengisihnya secara tidak sensitif huruf besar dan kecil menggunakan fungsi tersuai menghasilkan hasil ["A", "b", "c", "D"].

Isih Tidak sensitif huruf besar yang Cekap

Pendekatan di atas memperuntukkan dua rentetan baharu untuk setiap perbandingan. Untuk senarai rentetan yang besar, ini boleh menjadi tidak cekap. Untuk meningkatkan prestasi, pertimbangkan perbandingan rune-by-rune:

<code class="go">func runeCompare(a, b string) bool {
    for {
        r1, s1 := utf8.DecodeRuneInString(a)
        r2, s2 := utf8.DecodeRuneInString(b)
        if r1 == utf8.RuneError || r1 == r2 {
            return s1 < s2
        }
        a = a[s1:]
        b = b[s2:]
    }
}</code>
Salin selepas log masuk

Isih Cekap dengan runeCompare()

Untuk mengisih data dengan cekap:

<code class="go">sort.Slice(data, runeCompare)</code>
Salin selepas log masuk

Penyelesaian Alternatif: kumpulkan Pakej

Untuk pengisihan khusus bahasa atau budaya, pertimbangkan untuk menggunakan pakej susun. Ia menyediakan keupayaan pengisihan yang sedar setempat.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pengisihan Senarai Rentetan yang Tidak Peka Huruf dalam Go?. 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