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

我有一个中文字符串:


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] == '你'。


牧羊人nacy
浏览 245回答 1
1回答

MM们

使用range。x = "你好"for _, c := range x {&nbsp; &nbsp; // do something with c}如果要随机访问,则需要使用代码单元索引而不是字符索引。幸运的是,没有充分的理由需要字符索引,因此代码单元索引很好。大多数语言都有完全相同的问题。例如,Java和C#使用UTF-16,它也是一种可变长度编码(但有人认为不是)。有关为什么Go使用UTF-8的更多信息,请参见UTF-8宣言。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go