2012-10-29 32 views
6

Dizelerin öğeleri, tür baytına sahiptir ve olağan dizin oluşturma işlemleri kullanılarak erişilebilir.Karakter dizisi olarak dize getirme

Karakter dizisini char olarak nasıl alabilirim? -

, "bir" [1]> "o"

cevap

10

basit çözüm rün bir dizi dönüştürmek için:

var runes = []rune("someString") 

Not

bir yineleme zaman bu string, dönüşüme ihtiyacınız yok. Effective Go bu örneğe bakın:

for pos, char := range "日本語" { 
    fmt.Printf("character %c starts at byte position %d\n", char, pos) 
} 

Bu

character 日 starts at byte position 0 
character 本 starts at byte position 3 
character 語 starts at byte position 6 
4

Git dizeleri genellikle basar, zorunlu olmamakla birlikte UTF-8 kodlu. Unicode dizeleri olması durumunda, "char [acter]" terimi oldukça karmaşıktır ve runes (kod noktaları) ve Unicode karakterlerinin hiçbir özel/benzersiz bijeksiyonu yoktur. Neyse

kolayca bir dönüşümü kullanılarak içine bir dilim ve kullanım endekslerinde kod noktaları (rünler) çalışabilirsiniz: Ayrıca burada

package main 

import "fmt" 

func main() { 
     utf8 := "Hello, 世界" 
     runes := []rune(utf8) 
     fmt.Printf("utf8:% 02x\nrunes: %#v\n", []byte(utf8), runes) 
} 

: http://play.golang.org/p/qWVSA-n93o

Not: Unicode erişmek için sık sık arzu Dizine göre "karakterler" bir tasarım hatasıdır. Metin verilerinin çoğu ardışık olarak işlenir.