为了账号安全,请及时绑定邮箱和手机立即绑定

Go lang 相当于 JavaScript 的 charCode() 方法

Go lang 相当于 JavaScript 的 charCode() 方法

Go
绝地无双 2021-10-18 16:56:35
charCodeAt()JavaScript 中的方法返回给定索引处字符的数字 Unicode 值,例如"s".charCodeAt(0) // returns 115我将如何获得 Go 中相同字符串/字母的数字 unicode 值?
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

Go 中的字符类型是runewhich 的别名,int32所以它已经是一个数字,只需打印它。


您仍然需要一种方法来获取指定位置的字符。最简单的方法是将转换string到一个[]rune你可以索引。要将 a 转换string为符文,只需使用类型转换[]rune("some string"):


fmt.Println([]rune("s")[0])

印刷:


115

如果要将其打印为字符,请使用%c格式字符串:


fmt.Println([]rune("absdef")[2])      // Also prints 115

fmt.Printf("%c", []rune("absdef")[2]) // Prints s

另请注意,for rangeon astring遍历字符串的符文,因此您也可以使用它。它比整个转换更加高效string到[]rune:


i := 0

for _, r := range "absdef" {

    if i == 2 {

        fmt.Println(r)

        break

    }

    i++

}

请注意,计数器i必须是不同的计数器,它不能是循环迭代变量,因为for range返回的是字节位置而不是rune索引(如果stringUTF-8 表示中包含多字节字符,则索引会有所不同)。


将其包装成一个函数:


func charCodeAt(s string, n int) rune {

    i := 0

    for _, r := range s {

        if i == n {

            return r

        }

        i++

    }

    return 0

}

在Go Playground上试试这些。


另请注意,stringGo 中的 s 作为 a 存储在内存中,[]byte它是文本的 UTF-8 编码字节序列(阅读博客文章Go 中的字符串、字节、符文和字符以获取更多信息)。如果您保证string使用代码小于 127 的字符,您可以简单地使用字节。那就是string在 Go 中索引 a索引它的字节,例如"s"[0]它的字节值's'是115。


fmt.Println("s"[0])      // Prints 115

fmt.Println("absdef"[2]) // Prints 115


查看完整回答
反对 回复 2021-10-18
  • 1 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信