Die Elemente von Zeichenfolgen haben den Typ Byte und können mit den üblichen Indizierungsoperationen aufgerufen werden.Indexierungszeichenfolge als Zeichen
Wie kann ich Element der Zeichenfolge als Zeichen erhalten?
"some" [1] -> "o"
Die Elemente von Zeichenfolgen haben den Typ Byte und können mit den üblichen Indizierungsoperationen aufgerufen werden.Indexierungszeichenfolge als Zeichen
Wie kann ich Element der Zeichenfolge als Zeichen erhalten?
"some" [1] -> "o"
Die einfachste Lösung ist es zu einer Reihe von Runen zu konvertieren:
var runes = []rune("someString")
Beachten Sie, wenn Sie auf einem iterieren Zeichenfolge, Sie brauchen die Konvertierung nicht. Sehen Sie dieses Beispiel aus Effective Go:
for pos, char := range "日本語" {
fmt.Printf("character %c starts at byte position %d\n", char, pos)
}
Dieser druckt
character 日 starts at byte position 0
character 本 starts at byte position 3
character 語 starts at byte position 6
Go-Strings sind in der Regel, aber nicht notwendigerweise, UTF-8 codiert. In dem Fall, dass es sich um Unicode-Strings handelt, ist der Begriff "char [acter]" ziemlich komplex und es gibt keine generelle/eindeutige Bijektion von Runen (Codepunkten) und Unicode-Zeichen.
Auf jeden Fall kann man leicht mit Codepunkten arbeiten (Runen) in einer Scheibe und Indizes in sie mit einer Umwandlung:
package main
import "fmt"
func main() {
utf8 := "Hello, 世界"
runes := []rune(utf8)
fmt.Printf("utf8:% 02x\nrunes: %#v\n", []byte(utf8), runes)
}
Auch hier: http://play.golang.org/p/qWVSA-n93o
Hinweis: Oft ist der Wunsch nach Unicode zugreifen "Zeichen" nach Index ist ein Konstruktionsfehler. Die meisten Textdaten werden sequentiell verarbeitet.