Golang memintas aksara Cina yang kacau

PHPz
Lepaskan: 2023-05-15 10:06:07
asal
1104 orang telah melayarinya

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])) }
Salin selepas log masuk

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)) }
Salin selepas log masuk

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!

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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!