Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyusun Rentetan Tanpa Kepekaan Huruf dalam Go?

Bagaimana untuk Menyusun Rentetan Tanpa Kepekaan Huruf dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-10-28 18:41:30288semak imbas

How to Sort Strings Case-Insensitively in Go?

Isih Tidak Peka Huruf Menggunakan Isihan.Strings() dalam Go

In Go, fungsi sort.Strings() digunakan untuk mengisih senarai rentetan. Walau bagaimanapun, ia tidak menyediakan pilihan untuk pengisihan tidak peka huruf besar-kecil di luar kotak.

Fungsi Perbandingan Tersuai

Salah satu cara untuk mencapai pengisihan tidak sensitif huruf besar-besaran ialah dengan lulus fungsi perbandingan tersuai untuk mengisih.Strings(). Fungsi ini harus kembali benar jika rentetan pertama harus datang sebelum rentetan kedua dalam tertib yang diisih.

Kod berikut menunjukkan cara melakukannya:

<code class="go">package main

import (
    "fmt"
    "sort"
)

func main() {
    data := []string{"A", "b", "D", "c"}

    sort.Slice(data, func(i, j int) bool {
        return strings.ToLower(data[i]) < strings.ToLower(data[j])
    })

    fmt.Println(data) // Output: [A b c D]
}</code>

Pendekatan ini mencipta rentetan baharu untuk setiap perbandingan, yang boleh menjadi tidak cekap untuk senarai rentetan yang besar.

Perbandingan Rune-by-Rune

Untuk mengelakkan peruntukan, pendekatan yang lebih cekap ialah membandingkan rentetan rune demi rune, menukarkannya kepada huruf kecil dengan cepat:

<code class="go">sort.Slice(data, func(i, j int) bool {
    for {
        rb, nb := utf8.DecodeRuneInString(data[j])
        if nb == 0 {
            return false
        }
        ra, na := utf8.DecodeRuneInString(data[i])
        if na == 0 {
            return true
        }
        rb = unicode.ToLower(rb)
        ra = unicode.ToLower(ra)
        if ra != rb {
            return ra < rb
        }
        data[i] = data[i][na:]
        data[j] = data[j][nb:]
    }
})</code>

Isih Khusus Bahasa

Pakej kolat dalam Go menyediakan fungsi yang lebih maju untuk bahasa- pesanan pengisihan khusus atau budaya khusus.

Atas ialah kandungan terperinci Bagaimana untuk Menyusun Rentetan Tanpa Kepekaan Huruf dalam Go?. 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