Go 有 unicode
包,其中包含有用的函数,例如 IsGraphic
或 IsPrint
。但缺少的一个功能是 IsAssigned
。当然,我可以使用其他函数来编写自己的函数。但我宁愿期望标准库提供这个功能。在 Java 中,编写这个函数很容易:
boolean isAssigned(int codePoint) {
return Character.getType(codePoint) != Character.UNASSIGNED;
}
在 Go 中,没有函数 unicode.Type(rune)
或 unicode.IsAssigned(rune)
。我能找到的最接近的是:
func IsAssigned(r rune) bool {
return unicode.IsControl(r) ||
unicode.IsGraphic(r) ||
unicode.IsSymbol(r)
}
但是该代码认为 U+00AD(软连字符)未分配,这是错误的。
如何获得有关未分配代码点的正确信息?
最佳答案
我认为您可以使用 unicode.Is
验证代码点已分配或未和 unicode.Categories
(尽管效率不高),即
func IsAssigned(r rune) bool {
for _, v := range unicode.Categories {
if unicode.Is(v, r) {
return true
}
}
return false
}
工作示例位于 The Go Playground .
关于go - 检查是否分配了 Unicode 代码点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49763103/