string - 如何根据 rune 而不是 Go 中的字节获取子字符串索引?

标签 string go unicode substr

我在玩 Golang 时发现了这个问题。我可以使用以下代码来获取基于字节的索引:

strings.Index("您好你好", "你好")

我得到的是 6,它是基于字节计数的。

如果我们指望 rune (字符),我们应该得到 2,这正是我想要的。我怎样才能得到我想要的?

谢谢。

最佳答案

您可以使用 utf8.RuneCountInString()方法:

import (
    "fmt"
    "strings"
    "unicode/utf8"
)

func main() {
    input_string := "您好你好"
    byte_index := strings.Index(input_string, "你好")
    fmt.Println(utf8.RuneCountInString(input_string[:byte_index]))
}

关于string - 如何根据 rune 而不是 Go 中的字节获取子字符串索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39189365/

相关文章:

Python 与子字符串的交集

go - 是否可以在 Go 中的单值上下文中有选择地获取返回值?

go - nginx 502 错误始终存在,没有应用程序错误

winapi - ExtTextOut不显示下标字符

unicode - 尝试在 Elixir 中将 unicode 字符写入文件时出现 no_translation 错误

python - 为什么使用 Python 的多行字符串替换适用于硬编码字符串,但在从文件中读取字符串时却不行?

java - 插入冒号的方法是什么(:) after every two characters in a string?

c++ - 将 int 值附加到字符串?

GoLang 实现自定义类型的匿名函数

ios - 为什么某些 unicode 字符在 Interface Builder 中不显示?