Go 中的 UTF-8 范围 table

UTF-8 range table in Go

我一直在阅读 unicode Go page,我想知道范围表的用例是什么。它们有什么用?有没有函数可以检索单个字符所在的范围

范围 table 的目的是它是描述一组字符的有效方式。由于将字符添加到 Unicode 标准的方式,具有相似属性的字符通常会一起出现。因此,通常 space 列出存在特定字符集的 范围 比列出每个单独的字符更有效。

这允许您通过执行一系列范围检查来查找给定字符是否存在于特定字符集中。如果字符的 Unicode 代码点在范围 table 中的任何范围内,则该字符被认为是范围 table 描述的字符集的元素。

没有通用函数来检索可以找到单个字符的范围,因为 character -> range 在一般情况下不是唯一的或特别有用的关系。例如,以字母 A 为例。它存在于 [65, 90] 范围内(ASCII 大写字母),但它也存在于 [0, 127] 范围内(所有 ASCII 字符),以及范围 [9, 9999][60, 70] 等..

如果您想知道一个字符是否在特定范围tables中,您可以使用unicode.In函数。

Example:

package main

import (
    "fmt"
    "unicode"
)

func main() {
    found := unicode.In('A', unicode.Latin)
    fmt.Println(found)
}
true

这会检查 A 是否存在于任何给定范围 table unicode.Latin 或“脚本拉丁语中的 Unicode 字符集”