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



JavaScript 中的 charCodeAt() 方法返回给定索引处字符的数字 Unicode 值,例如

"s".charCodeAt(0) // returns 115

我将如何在 Go 中获取相同字符串/字母的数字 unicode 值?

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

您仍然需要一种方法来将角色放在指定位置。最简单的方法是将string转换为可以编制索引的[]rune。要将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

另请注意,string上的for range遍历字符串的符文,因此您也可以使用它。它比将整个string转换为[]rune更有效:

i := 0
for _, r := range "absdef" {
    if i == 2 {
        fmt.Println(r)
        break
    }
    i++
}

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

将其包装到函数中:

func charCodeAt(s string, n int) rune {
    i := 0
    for _, r := range s {
        if i == n {
            return r
        }
        i++
    }
    return 0
}

在Go Playground上尝试这些。

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

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

内部字符串是 golang 中的一个 8 位字节数组。因此,每个字节将代表 ascii 值。

str:="abc"
byteValue := str[0]
intValue := int(byteValue)
fmt.Println(byteValue)//97
fmt.Println(intValue)//97

相关内容

最新更新