首页 > 解决方案 > Go 中的 UTF-8 范围表

问题描述

我一直在阅读 unicode Go页面,我想知道范围表的用例是什么。它们可以用来做什么?是否有一个函数可以检索可以找到单个字符的范围。

标签: stringgoutf-8

解决方案


范围表的目的是它是描述一组字符的有效方式。由于字符被添加到 Unicode 标准的方式,具有相似属性的字符通常会一起找到。因此,列出存在特定字符集的范围通常更节省空间,而不是列出每个单独的字符。

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

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

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

例子:

package main

import (
    "fmt"
    "unicode"
)

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

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


推荐阅读