Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyusun Rentetan Tanpa Kepekaan Huruf dalam 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!