Elementy ciągów mają bajt typu i można do nich uzyskać dostęp za pomocą zwykłych operacji indeksowania .Łańcuch indeksowania jako znaki
Jak mogę uzyskać element ciągu jako znak?
"niektóre" [1] -> "O"
Elementy ciągów mają bajt typu i można do nich uzyskać dostęp za pomocą zwykłych operacji indeksowania .Łańcuch indeksowania jako znaki
Jak mogę uzyskać element ciągu jako znak?
"niektóre" [1] -> "O"
Najprostszym rozwiązaniem jest, aby przekształcić go do tablicy run:
var runes = []rune("someString")
Zauważ, że gdy iteracyjne na zasadzie ciąg, nie potrzebujesz konwersji. Zobacz ten przykład z Effective Go:
for pos, char := range "日本語" {
fmt.Printf("character %c starts at byte position %d\n", char, pos)
}
Drukuje
character 日 starts at byte position 0
character 本 starts at byte position 3
character 語 starts at byte position 6
Go łańcuchy są zazwyczaj, ale niekoniecznie, kodowanie UTF-8. W przypadku, gdy są to ciągi Unicode, termin "char [act]" jest dość złożony i nie ma generalnego/unikalnego bijsu runów (punktów kodowych) i znaków Unicode.
Zresztą można łatwo pracować z punktów kodowych (runy) w segmencie i ruchu indeksów do niego za pomocą konwersji:
package main
import "fmt"
func main() {
utf8 := "Hello, 世界"
runes := []rune(utf8)
fmt.Printf("utf8:% 02x\nrunes: %#v\n", []byte(utf8), runes)
}
Również tutaj: http://play.golang.org/p/qWVSA-n93o
uwaga: często chęć dostępu Unicode "znaki" według indeksu jest błędem projektu. Większość danych tekstowych jest przetwarzana sekwencyjnie.