gpt4 book ai didi

string - Go中子字符串的字符位置

转载 作者:IT王子 更新时间:2023-10-29 01:14:55 27 4
gpt4 key购买 nike

我如何知道子字符串在字符串中的位置,以字符(或 rune )而不是字节为单位?

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

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

结果:1​​4。预期:7

当然,我可以将 ssub 转换为 []rune 并手动查找子 slice ,但是有没有更好的方法去做吧?

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

最佳答案

导入 unicode/utf8 后,您可以这样做包裹:

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

http://play.golang.org/p/Etszu3rbY3

关于string - Go中子字符串的字符位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21809653/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com