Heim >Backend-Entwicklung >Golang >Wie indiziert man Zeichen in den UTF-8-Strings von Go richtig?

Wie indiziert man Zeichen in den UTF-8-Strings von Go richtig?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-17 18:17:10136Durchsuche

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

Zeichenindizierung in Golang-Strings: UTF-8-Dekodierung

Obwohl Golangs String-Literale in UTF-8 codierte Zeichenfolgen sind, die einzelne Zeichen indizieren B. anhand ihrer Position mithilfe der Array-ähnlichen Syntax string[index], kann zu unerwarteten Ergebnissen führen. Dies liegt daran, dass UTF-8-Zeichen mehrere Bytes belegen können und die Indizierung nach Byteposition die UTF-8-Kodierung zerstören kann.

Um einzelne Zeichen genau zu indizieren und abzurufen, bietet Golang mehrere Optionen:

Verwendung von Unicode-Codepunkten (Runen)

  • string([]rune("string")[index]): Konvertieren Sie die Zeichenfolge in ein Runensegment, wobei jede Rune a darstellt Unicode-Codepunkt. Dieser Ansatz gewährleistet eine konsistente Zeichenindizierung unabhängig von der UTF-8-Byteposition.

Beispiel:

package main

import "fmt"

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

Konvertieren von Bytes in Zeichen

  • string("byte"): Konvertieren Sie a Ein-Byte-ASCII-Zeichen in eine Zeichenfolge umwandeln. Beachten Sie, dass dies nur für ASCII-Zeichen gilt (die ersten 128 Unicode-Zeichen).

Beispiel:

package main

import "fmt"

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

Das obige ist der detaillierte Inhalt vonWie indiziert man Zeichen in den UTF-8-Strings von Go richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn