Mengindeks Aksara dalam Rentetan Golang
Untuk mendapatkan semula aksara daripada rentetan, anda menggunakan operasi pengindeksan. Walau bagaimanapun, anda mungkin menghadapi kes di mana nilai yang diindeks tidak sepadan dengan aksara yang dijangkakan. Sebagai contoh, dalam kod di bawah:
package main import "fmt" func main() { fmt.Print("HELLO"[1]) }
Outputnya ialah 69 dan bukannya huruf "E."
Memahami Pengekodan Rentetan Golang
Golang menggunakan pengekodan UTF-8 untuk literal rentetan. Aksara ASCII, termasuk huruf "E," menduduki satu bait. Walau bagaimanapun, aksara Unicode yang lebih besar mungkin diwakili oleh berbilang bait.
Menggunakan Runes untuk Pengindeksan Aksara
Untuk mengindeks aksara dengan betul, gunakan rune: integer mewakili titik kod Unikod. Rune ialah jenis asas untuk aksara dalam UTF-8. Anda boleh menukar bait kepada rune menggunakan fungsi rune().
Menukar Bait kepada Aksara
Untuk menukar bait kepada aksara yang sepadan, anda boleh menggunakan string() function:
fmt.Println(string("Hello"[1])) // ASCII only
Pendekatan ini berfungsi dengan baik untuk ASCII aksara.
Menukar Runes kepada Aksara
Untuk aksara Unicode, anda boleh menukar rune kepada aksara menggunakan hirisan []rune():
fmt.Println(string([]rune("Hello, 世界")[1])) // UTF-8
Contoh dengan Aksara Unikod
Pertimbangkan contoh berikut:
fmt.Println(string([]rune("Hello, 世界")[8])) // UTF-8
Ini akan mencetak "界," iaitu titik kod Unikod untuk aksara Cina "dunia."
Sumber Tambahan
Atas ialah kandungan terperinci Mengapa Pengindeksan Rentetan di dalam Sentiasa Mengembalikan Watak yang Dijangkakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!