为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Go中遍历UTF-8字符串?

如何在Go中遍历UTF-8字符串?

Go
牧羊人nacy 2021-05-10 17:26:34
我有一个中文字符串:x = "你好"我想遍历它,并对其中的每个字符进行操作,例如:for i, len := 0, len(x); i < len; i++ {    foo( x[i] ) // do sth.}我发现它len(x)会返回6而不是2,在Google之后,我找到了RuneCountInString将返回字符串的实际长度的方法,但是例如,我仍然不知道如何循环以x[i]获取正确的字符x[0] == '你'。
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

使用range。


x = "你好"

for _, c := range x {

    // do something with c

}

如果要随机访问,则需要使用代码单元索引而不是字符索引。幸运的是,没有充分的理由需要字符索引,因此代码单元索引很好。


大多数语言都有完全相同的问题。例如,Java和C#使用UTF-16,它也是一种可变长度编码(但有人认为不是)。


有关为什么Go使用UTF-8的更多信息,请参见UTF-8宣言。


查看完整回答
反对 回复 2021-05-17
  • 1 回答
  • 0 关注
  • 244 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信