我有一个中文字符串: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宣言。
- 1 回答
- 0 关注
- 244 浏览
添加回答
举报
0/150
提交
取消