Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah saya boleh melakukan pengisihan rentetan yang tidak peka huruf besar-besaran dalam Go menggunakan fungsi `sort.Strings()`?
Isih Tidak Peka Huruf dengan isihan.Strings() dalam Go
Dalam Go, anda boleh mengisih senarai rentetan dalam kes -cara tidak sensitif menggunakan fungsi sort.Strings() dengan fungsi perbandingan tersuai. Fungsi tersuai ini membandingkan rentetan menggunakan hasil penukaran rentetan kepada huruf kecil.
Contoh:
<code class="go">data := []string{"A", "b", "D", "c"} sort.Strings(data) // Default case-sensitive sorting fmt.Println(data) // Output: [A b c D]</code>
Untuk mencapai pengisihan tidak peka huruf besar-kecil, kita boleh menentukan tersuai fungsi seperti berikut:
<code class="go">sort.Slice(data, func(i, j int) bool { return strings.ToLower(data[i]) < strings.ToLower(data[j]) })</code>
Fungsi ini menukarkan kedua-dua rentetan kepada huruf kecil sebelum membandingkannya, menghasilkan tertib pengisihan tidak sensitif huruf besar dan kecil.
Menjalankan kod yang dikemas kini:
<code class="go">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>
Alternatif:
Walaupun pendekatan di atas berkesan, ia boleh melibatkan peruntukan rentetan semasa perbandingan. Untuk mengelakkan peruntukan, pendekatan alternatif ialah membandingkan rentetan rune demi rune sambil menukar setiap rune kepada huruf kecil:
<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:] } }</code>
Anda kemudiannya boleh menggunakan fungsi lessLower ini untuk mengisih rentetan secara tidak sensitif huruf besar:
<code class="go">sort.Slice(data, func(i, j int) bool { return lessLower(data[i], data[j]) })</code>
Untuk pesanan isihan khusus bahasa atau budaya, pertimbangkan untuk menggunakan pakej susun.
Atas ialah kandungan terperinci Bagaimanakah saya boleh melakukan pengisihan rentetan yang tidak peka huruf besar-besaran dalam Go menggunakan fungsi `sort.Strings()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!