6
如何知道字符串中的子字符串的位置,字符(或符号)而不是字节?Go中的字符串中的位置
strings.Index(s, sub)
将以字节为单位给出位置。当使用Unicode时,它不会在符文匹配的位置:http://play.golang.org/p/DnlFjPaD2j
func main() {
s := "áéíóúÁÉÍÓÚ"
fmt.Println(strings.Index(s, "ÍÓ"))
}
结果:14预期:7
当然,我可以s
和sub
转换为[]rune
和手动查找子切片,但有没有更好的方法来做到这一点?
与此相关,获取第一个n
字符串的字符我这样做:string([]rune(s)[:n])
。这是最好的方法吗?