Gli elementi delle stringhe sono di tipo byte e si può accedere utilizzando le normali operazioni di indicizzazione .Stringa di indicizzazione come caratteri
Come posso ottenere l'elemento di stringa come carattere?
"alcuni" [1] -> "o"
Gli elementi delle stringhe sono di tipo byte e si può accedere utilizzando le normali operazioni di indicizzazione .Stringa di indicizzazione come caratteri
Come posso ottenere l'elemento di stringa come carattere?
"alcuni" [1] -> "o"
La soluzione più semplice è quello di convertirlo in una serie di rune:
var runes = []rune("someString")
Si noti che quando si itera su un stringa, non hai bisogno della conversione. Vedere questo esempio da Effective Go:
for pos, char := range "日本語" {
fmt.Printf("character %c starts at byte position %d\n", char, pos)
}
Questo stampa
character 日 starts at byte position 0
character 本 starts at byte position 3
character 語 starts at byte position 6
stringhe Go sono di solito, ma non necessariamente, codifica UTF-8. Nel caso si tratti di stringhe Unicode, il termine "char [acter]" è piuttosto complesso e non vi è alcuna generica/unica biiezione di rune (punti codice) e caratteri Unicode.
In ogni caso si può facilmente lavorare con punti di codice (rune) in una fetta e sull'uso di indici in esso con una conversione:
package main
import "fmt"
func main() {
utf8 := "Hello, 世界"
runes := []rune(utf8)
fmt.Printf("utf8:% 02x\nrunes: %#v\n", []byte(utf8), runes)
}
Anche qui: http://play.golang.org/p/qWVSA-n93o
Nota: Spesso il desiderio di accedere a Unicode "caratteri" per indice è un errore di progettazione. La maggior parte dei dati testuali viene elaborata in sequenza.