dongxibo2095 2018-04-10 21:27
浏览 78

检查是否分配了Unicode代码点

Go has the unicode package, containing useful functions such as IsGraphic or IsPrint. One function that is missing though is IsAssigned. Of course I could write my own function by using the other functions. But I would rather expect the standard library to provide this function. In Java, writing this function is easy:

boolean isAssigned(int codePoint) {
    return Character.getType(codePoint) != Character.UNASSIGNED;
}

In Go there is no function unicode.Type(rune) or unicode.IsAssigned(rune). The closest I could find is this:

func IsAssigned(r rune) bool {
    return unicode.IsControl(r) ||
            unicode.IsGraphic(r) ||
            unicode.IsSymbol(r)
}

But that code thinks that U+00AD (soft-hyphen) is unassigned, which is wrong.

How can I get correct information about unassigned code points?

  • 写回答

1条回答 默认 最新

  • dongsi2317 2018-04-10 23:31
    关注

    I think you can verify a code point is assigned or not using unicode.Is and unicode.Categories (though it is not efficient), i.e.

    func IsAssigned(r rune) bool {
        for _, v := range unicode.Categories {
            if unicode.Is(v, r) {
                return true
            }
        }
        return false
    }
    

    Working example is in The Go Playground.

    评论

报告相同问题?

悬赏问题

  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本