从符文获取unicode类别

时间:2014-09-11 19:26:07

标签: unicode go rune

我正在寻找一种从Go中的RangeTable获取unicode类别(rune)的方法。例如,字符a映射到Ll类别。 unicode包指定了所有类别(http://golang.org/pkg/unicode/#pkg-variables),但我没有看到从给定rune查找类别的任何方法。我是否需要使用适当的偏移量从RangeTable手动构建rune

2 个答案:

答案 0 :(得分:8)

" unicode"的文档package没有返回符文范围的方法,但构建符号并不是很棘手:

func cat(r rune) (names []string) {
    names = make([]string, 0)
    for name, table := range unicode.Categories {
        if unicode.Is(table, r) {
            names = append(names, name)
        }
    }
    return
}

答案 1 :(得分:0)

这是基于接受的答案的替代版本,返回Unicode类别:

// UnicodeCategory returns the Unicode Character Category of the given rune.
func UnicodeCategory(r rune) string {
    for name, table := range unicode.Categories {
        if len(name) == 2 && unicode.Is(table, r) {
            return name
        }
    }
    return "Cn"
}