如何确定字符的Unicode块,特别是QT QCHAR?
题
在Java中,我能够确定一个特定字符是否是使用unicode.blockof(字符)的日本汉字。我正在尝试为QCHAR做同样的事情,但找不到相关功能来执行此操作。我想知道我是否只是错过了它,还是必须自己滚动,如果是这样 - 如何?
解决方案
有 QCHAR ::类别 但是,它不能提供您需要的一切。
要检查字符是否在某些范围内,您可以编写这样的函数:
bool inRange(QChar c, ushort b, ushort e) {
return (c.unicode() >= b) && (c.unicode() <= e);
}
然后,您可以这样使用它:
inRange(c, 0x3040, 0x309F); // Hiragana?
当然,您可以走得更远,使其更加抽象并枚举范围:
inRange(c, Range::Hiragana);
和 这里 是Unicode块的列表
其他提示
我不知道是否有更好的QT特定方法。如果没有,您可以尝试使用 ICU 而不是滚动自己的解决方案。
ICU具有“ C/C ++”版本和Java版本。 ICU的Java版本实际上与I18N/L10N的一些Java标准库共享一个共同的祖先,因此C/C ++版本希望您可以轻松弄清楚。
不隶属于 StackOverflow