2012-10-29 95 views
6

字符串的元素具有字节类型,并且可以使用 通常的索引操作进行访问。作为字符的索引字符串

如何获取字符串的元素为char?

“一些”[1] - >的 “o”

回答

10

的最简单的解决方案是将其转换为符的数组:

var runes = []rune("someString") 

注意,当你迭代上的字符串,你不需要转换。从Effective Go看到这个例子:

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

这将打印

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

围棋串通常,但不一定,UTF-8编码。在Unicode字符串的情况下,术语“char [acter]”非常复杂,并且没有符文(代码点)和Unicode字符的通用/唯一双注。

反正可以用切片和使用索引的代码点(符文),使用转换工作轻松了进去:

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

注:经常访问Unicode的欲望索引中的“字符”是一个设计错误。大多数文本数据是按顺序处理的。