首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >符文切片长度与RuneCountInString的差异?

符文切片长度与RuneCountInString的差异?
EN

Stack Overflow用户
提问于 2018-03-21 03:55:20
回答 1查看 1.7K关注 0票数 1

我们可以通过从字符串中转换符文切片的长度来获得字符串中的符文数。

代码语言:javascript
复制
s := "世界"
runes := []rune(s)
fmt.Println(len(runes))

或者在RuneCountInString包中使用unicode/utf8函数。

代码语言:javascript
复制
fmt.Println(utf8.RuneCountInString(s))

这两者有什么区别?

EN

回答 1

Stack Overflow用户

发布于 2018-03-21 05:37:29

不同的是,第一个问题是:

代码语言:javascript
复制
runes  := []rune(s)
length := len(runes)

必须逐步遍历s来构建rune的一个片段,然后询问该切片有多长时间,而utf8.RuneCountInString只要看到构成UTF-8字符的连续字节序列,就可以通过字节逐个递增计数器。

[]rune(s)版本必须比utf8.RuneCountInString做更多的工作。

粗略地在源代码中徘徊的一点表明,[]rune(someString)是由stringtoslicerune实现的,它实际上对字符串进行了两次迭代:一个是查找有多少个rune,另一个是将这些rune复制到一个片段中。我对此不太确定,因为我不太熟悉Go的实现细节。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49397913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档