JavaScript中的charCodeAt()
方法返回给定索引处字符的数字Unicode值,例如
"s".charCodeAt(0) // returns 115
如何在Go中获取相同字符串/字母的数字unicode值?
答案 0 :(得分:14)
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
另请注意for range
上的string
遍历字符串的符文,因此您也可以使用它。它比将整个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编码字节序列(请阅读博文Strings, bytes, runes and characters in Go了解更多信息)。如果您保证string
使用代码小于127的字符,则可以使用字节。这是在Go索引中为string
索引其字节,因此例如"s"[0]
是's'
的字节值,即115
。
fmt.Println("s"[0]) // Prints 115
fmt.Println("absdef"[2]) // Prints 115
答案 1 :(得分:4)
内部字符串是golang中的8位字节数组。所以每个字节都代表ascii值。
str:="abc"
byteValue := str[0]
intValue := int(byteValue)
fmt.Println(byteValue)//97
fmt.Println(intValue)//97