douzhuangxuan3268 2018-03-21 03:55
浏览 186

符文切片的长度和RuneCountInString之间的区别?

We can get the number of runes in a string by getting the length of the rune slice converted from the string.

s := "世界"
runes := []rune(s)
fmt.Println(len(runes))

Or use the RuneCountInString function in unicode/utf8 package.

fmt.Println(utf8.RuneCountInString(s))

What's the difference between the two?

  • 写回答

1条回答 默认 最新

  • douke6881 2018-03-21 05:37
    关注

    The difference is that the first one:

    runes  := []rune(s)
    length := len(runes)
    

    has to step through s to build a slice of runes and then ask that slice how long it is whereas utf8.RuneCountInString simply steps through s byte by byte incrementing a counter whenever it sees a sequence of contiguous bytes that make up a UTF-8 character.

    The []rune(s) version has to do more work than utf8.RuneCountInString does.


    A cursory bit of wandering around the source suggests that []rune(someString) is implemented by stringtoslicerune which actually does two iterations over the string: one two find out how many runes are there and another to copy those runes into a slice. I'm not certain about this as I'm not that familiar with the implementation details of Go.

    评论

报告相同问题?

悬赏问题

  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果