Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengindeks Aksara dengan Betul dalam Rentetan UTF-8 Go?

Bagaimana untuk Mengindeks Aksara dengan Betul dalam Rentetan UTF-8 Go?

Patricia Arquette
Lepaskan: 2024-12-17 18:17:10
asal
124 orang telah melayarinya

How to Correctly Index Characters in Go's UTF-8 Strings?

Pengindeksan Aksara dalam Rentetan Golang: Penyahkodan UTF-8

Walaupun literal rentetan Golang ialah jujukan aksara yang dikodkan dalam UTF-8, mengindeks aksara individu dengan kedudukan mereka menggunakan rentetan sintaks seperti tatasusunan[indeks] boleh menghasilkan hasil yang tidak dijangka. Ini kerana aksara UTF-8 boleh menduduki berbilang bait, dan pengindeksan mengikut kedudukan bait boleh memecahkan pengekodan UTF-8.

Untuk mengindeks dan mendapatkan semula aksara individu dengan tepat, Golang menawarkan beberapa pilihan:

Menggunakan Mata Kod Unikod (Runes)

  • string([]rune("string")[index]): Tukar rentetan kepada sekeping rune, di mana setiap rune mewakili Titik kod Unicode. Pendekatan ini memastikan pengindeksan aksara yang konsisten tanpa mengira kedudukan UTF-8 bait.

Contoh:

package main

import "fmt"

func main() {
    fmt.Println(string([]rune("HELLO, 世界")[1])) // "E"
    fmt.Println(string([]rune("HELLO, 世界")[8])) // "界"
}
Salin selepas log masuk

Menukar Bait kepada Aksara

  • rentetan("bait"): Tukar aksara ASCII bait tunggal kepada rentetan. Ambil perhatian bahawa ini hanya terpakai kepada aksara ASCII (128 aksara Unikod pertama).

Contoh:

package main

import "fmt"

func main() {
    fmt.Println(string("HELLO"[1])) // "e"
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengindeks Aksara dengan Betul dalam Rentetan UTF-8 Go?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan