2014-02-16 74 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])。這是最好的方法嗎?

回答