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

标签 string unicode go

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

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

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

最佳答案

Go 中的字符类型是 rune ,它是 int32 的别名,所以它已经是一个数字,打印出来就可以了。

您仍然需要一种方法来获取指定位置的字符。最简单的方法是将 string 转换为可以索引的 []rune。要将 string 转换为 runes,只需使用类型转换 []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 会遍历字符串的 rune ,因此您也可以使用它。它比将整个 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

关于string - Go lang 相当于 JavaScript 的 charCode() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31239330/

相关文章:

string - 如何将多个字符串和int合并成一个字符串

java - 10秒的滑动窗口?

string - JavaFx - 如何在 TableView 中显示 SimpleStringProperty 值

Go 教程 : Channels, Buffered Channels 教程

go - 对于选择组问题

多字节字符串的正则表达式字边界

python-3.x - 空白字符串的正则表达式

c++ - 如何将文件读入字符串数组;奇怪的错误

java - 如何从 JEditorPane 获取正确的 Unicode 字符串(无 &#enties;)?

php - MySQL 搜索非 ascii 字符无法按 LIKE 预期工作