如何知道子字符串在字符串中的位置,以字符(或符文)而不是字节为单位?
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])
. 这是最好的方法吗?