我有一個中文字符串:x = "你好"我想遍歷它,并對其中的每個字符進行操作,例如:for i, len := 0, len(x); i < len; i++ { foo( x[i] ) // do sth.}我發(fā)現(xiàn)它len(x)會返回6而不是2,在Google之后,我找到了RuneCountInString將返回字符串的實際長度的方法,但是例如,我仍然不知道如何循環(huán)以x[i]獲取正確的字符x[0] == '你'。
1 回答

MM們
TA貢獻1886條經(jīng)驗 獲得超2個贊
使用range。
x = "你好"
for _, c := range x {
// do something with c
}
如果要隨機訪問,則需要使用代碼單元索引而不是字符索引。幸運的是,沒有充分的理由需要字符索引,因此代碼單元索引很好。
大多數(shù)語言都有完全相同的問題。例如,Java和C#使用UTF-16,它也是一種可變長度編碼(但有人認為不是)。
有關(guān)為什么Go使用UTF-8的更多信息,請參見UTF-8宣言。
- 1 回答
- 0 關(guān)注
- 270 瀏覽
添加回答
舉報
0/150
提交
取消