Apabila menggunakan Golang untuk memintas rentetan, anda mungkin menghadapi masalah memintas aksara Cina, mengakibatkan output bercelaru. Fenomena ini berlaku kerana masalah pengekodan aksara Cina.
Golang menggunakan pengekodan UTF-8 untuk mewakili aksara, dan aksara Cina terdiri daripada tiga bait di bawah pengekodan UTF-8. Oleh itu, jika anda tidak memberi perhatian kepada isu pengekodan, beberapa masalah yang tidak dijangka akan berlaku apabila memintas rentetan, seperti output bercelaru, pemintasan rentetan tidak lengkap, dsb.
Berikut adalah beberapa kaedah untuk menyelesaikan masalah memintas aksara Cina yang bercelaru.
Kaedah 1: Gunakan rune
Rune dalam Golang mewakili aksara Unicode. Jika kita ingin memintas aksara Cina, kita boleh mula-mula menukar rentetan kepada jenis rune, kemudian memintas aksara yang diperlukan, dan akhirnya menukar jenis rune kepada rentetan.
Kod contoh:
package main import ( "fmt" ) func main() { str := "Go语言中文网" strRune := []rune(str) fmt.Println(string(strRune[0:2])) }
Hasil output ialah: Go
Kod di atas mula-mula menukar string str kepada jenis rune, dan kemudian menggunakan penghirisan rentetan untuk memintas dua yang pertama aksara, dan akhirnya menukar jenis rune kepada output rentetan. Memandangkan satu aksara Cina menduduki tiga bait, kita mesti memilih julat yang betul apabila memintas, jika tidak, aksara yang bercelaru akan muncul.
Kaedah 2: Gunakan panjang aksara Cina dan bukannya bilangan bait
Memandangkan aksara Cina menduduki tiga bait dalam Golang, kita boleh menggunakan panjang aksara Cina sebagai standard apabila memintas aksara Cina , bukannya dalam bait. Kaedah ini boleh mengelakkan masalah aksara bercelaru kerana bait yang tidak mencukupi.
Kod sampel:
package main import ( "fmt" "unicode/utf8" ) func main() { s := "Go语言中文网" var size int for i := range s { if size < 2 { size++ continue } fmt.Println(s[0:i]) break } fmt.Println("中文字符数量:", utf8.RuneCountInString(s)) }
Hasil output ialah: Bahasa Go
Kod pertama kali menggunakan fungsi RuneCountInString() dalam perpustakaan utf8 untuk mengira bilangan aksara Cina dalam rentetan, Kemudian potong dan pintas aksara yang sesuai mengikut kepanjangan aksara Cina.
Perlu diambil perhatian bahawa disebabkan pengekodan aksara yang berbeza, bilangan bait yang diduduki oleh aksara Cina dalam bahasa yang berbeza mungkin juga berbeza, jadi kita harus memilih kaedah yang sesuai untuk memintas rentetan mengikut spesifik keadaan.
Ringkasnya, kita boleh menggunakan jenis rune atau panjang aksara Cina untuk memintas rentetan, yang boleh mengelakkan masalah aksara Cina yang kacau-bilau dengan berkesan. Sudah tentu, dalam aplikasi praktikal, banyak situasi perlu dipertimbangkan untuk mencapai hasil yang terbaik.
Atas ialah kandungan terperinci Golang memintas aksara Cina yang kacau. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!