Rumah >pembangunan bahagian belakang >Golang >transkod Cina golang
Golang, sebagai salah satu bahasa pengaturcaraan yang semakin popular sejak beberapa tahun kebelakangan ini, mempunyai kelebihan kecekapan, keselamatan dan kesederhanaan, dan telah menjadi pilihan ramai jurutera. Namun, dari segi pemprosesan aksara Cina, pengalaman Golang sebenarnya tidak mencukupi sedikit berbanding beberapa bahasa pengaturcaraan yang lain. Oleh itu, transkod bahasa Cina di Golang juga merupakan kawasan yang memerlukan perhatian kita.
1. Jenis rentetan Golang
Sebelum bercakap tentang transkod bahasa Cina Golang, mari kita bercakap tentang jenis rentetan asas dalam Golang. Jenis rentetan dalam Golang ialah jujukan bait yang teratur dan tidak berubah, menggunakan pengekodan UTF-8 di bawahnya. Dalam Golang, rentetan ditakrifkan oleh petikan berganda " ", di mana tanda sengkang ke belakang "" boleh digunakan sebagai aksara melarikan diri Jika ia ditukar kepada ""r", ia bermaksud pemulangan gerabak dan jika ia ditukar kepada ". "n", ia bermaksud baris baharu.
Mari kita lihat contoh mudah:
package main import "fmt" func main() { s := "hello world" fmt.Println(s[1:4]) // 输出ell fmt.Println(len(s)) // 输出11 fmt.Println(s + " zen") // 输出hello world zen }
Dalam contoh di atas kita mengisytiharkan rentetan bernama s
dan kemudian menggunakan fmt
pakej Println
Fungsi mengeluarkan subrentetan dengan subskrip 1-3 dalam s
, panjang rentetan dan hasil penambahan s
pada "zen". Perlu diingatkan bahawa rentetan Golang tidak boleh diubah, dan mana-mana aksaranya tidak menyokong pengubahsuaian langsung Pengubahsuaian hanya boleh dibuat dengan menukar rentetan kepada tatasusunan bait dan kemudian mengubah suai elemen dalam tatasusunan, atau dengan mencipta rentetan baharu. Lakukan operasi seperti penyambungan.
2. Isu pengekodan Cina
Sebelum bercakap tentang transkod Cina Golang, kita juga perlu memahami isu pengekodan Cina. Isu pengekodan Cina terbahagi terutamanya kepada pengekodan ANSI dan pengekodan UNICODE, dan kami biasanya menggunakan pengekodan UNICODE. Dalam sistem pengekodan UNICODE, pengekodan aksara Cina bermula daripada 0x4E00, yang diwakili oleh nombornya dalam UNICODE. Walau bagaimanapun, dalam bahasa pengaturcaraan yang berbeza, perwakilan pengekodan aksara Cina mungkin sedikit berbeza, jadi kita mesti memberi perhatian khusus.
3. Operasi aksara Cina di Golang
Apabila berurusan dengan aksara Cina, masalah pertama yang perlu kami selesaikan ialah pemprosesan aksara Cina dalam rentetan. Di Golang, aksara Cina termasuk dalam kategori aksara yang dikodkan UTF-8, jadi kami boleh memproses aksara Cina dengan beroperasi pada rentetan yang dikodkan UTF-8. Berikut ialah beberapa contoh:
output rentetan Cina berkod 1.UTF-8:
package main import "fmt" func main() { s := "你好,世界!" //打印中文的字符串 fmt.Println(s) }
Dalam contoh di atas, kami mengisytiharkan rentetan bernama s
, di mana Mengandungi beberapa aksara Cina, dan dalam fungsi fmt
Println
, aksara Cina ini dikeluarkan secara normal.
2.UTF-8 panjang rentetan dikodkan:
package main import ( "fmt" "unicode/utf8" ) func main() { s := "你好,世界!" fmt.Println(utf8.RuneCountInString(s)) // 输出11 }
Dalam contoh di atas, kami menggunakan fungsi utf8.RuneCountInString
untuk mendapatkan panjang rentetan dalam rentetan s
, di mana Setiap aksara Cina dianggap sebagai satu watak.
Kepingan rentetan berkod 3.UTF-8:
package main import ( "fmt" "unicode/utf8" ) func main() { s := "你好,世界!" runeS := []rune(s) // 将字符串转为rune序列 fmt.Println(string(runeS[0:3])) // 输出 "你好" fmt.Println(utf8.RuneCountInString(s)) // 输出13 }
Dalam contoh di atas, kami mula-mula menggunakan []rune
untuk menukar rentetan s
kepada urutan rune, dan kemudian pilih seterusnya, dan kemudian ditukar kepada rentetan untuk output.
4. Transkod Cina Golang
Di Golang, salah satu keperluan yang paling biasa untuk transkod bahasa Cina mungkin ialah menukar aksara Cina dalam rentetan kepada pinyin. Kami boleh menggunakan pakej github.com/mozillazg/go-pinyin
untuk mengendalikan keperluan ini. Berikut ialah contoh:
package main import ( "fmt" "github.com/mozillazg/go-pinyin/pinyin" ) func main() { str := "中国" py := pinyin.NewArgs() fmt.Println(pinyin.Pinyin(str, py)) // 输出 [[zhong] [guo]] fmt.Println(pinyin.Convert(str, py)) // 输出 zhong-guo fmt.Println(pinyin.LazyPinyin(str, py)) // 输出 [zhong guo] fmt.Println(pinyin.Pinyin(strings.ToUpper(str), py)) // 输出 [[ZHONG] [GUO]] }
Dalam contoh di atas, kami menggunakan pakej github.com/mozillazg/go-pinyin/pinyin
untuk menukar rentetan Cina kepada Pinyin. Fungsi Pinyin
akan menukar aksara Cina ke dalam bentuk tatasusunan dua dimensi Pinyin, dan hasil pulangannya ialah hirisan yang terdiri daripada berbilang tatasusunan rentetan fungsi Convert
akan menukar semua aksara Cina kepada Pinyin dan mengembalikan bentuk rentetan Pinyin; fungsi LazyPinyin
juga boleh menukar aksara Cina kepada Pinyin, tetapi hasil yang dikembalikan ialah tatasusunan rentetan fungsi strings.ToUpper
digunakan untuk menukar rentetan asal kepada bentuk huruf besar.
5. Ringkasan
Pemprosesan aksara Cina di Golang memerlukan perhatian khusus Ini juga merupakan satu bidang yang memerlukan perhatian semasa proses pembangunan Golang. Kami boleh menyelesaikan operasi seperti penukaran dan output rentetan Cina melalui jenis rentetan asas dalam Golang dan beberapa pakej pemprosesan tertentu. Dalam amalan kejuruteraan, kita juga perlu memilih penyelesaian yang sesuai berdasarkan keperluan khusus.
Atas ialah kandungan terperinci transkod Cina golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!