2014-02-16 127 views
6

如何知道字符串中的子字符串的位置,字符(或符号)而不是字节?Go中的字符串中的位置

strings.Index(s, sub)将以字节为单位给出位置。当使用Unicode时,它不会在符文匹配的位置:http://play.golang.org/p/DnlFjPaD2j

func main() { 
    s := "áéíóúÁÉÍÓÚ" 
    fmt.Println(strings.Index(s, "ÍÓ")) 
} 

结果:14预期:7

当然,我可以ssub转换为[]rune和手动查找子切片,但有没有更好的方法来做到这一点?

与此相关,获取第一个n字符串的字符我这样做:string([]rune(s)[:n])。这是最好的方法吗?

回答