【发布时间】:2010-12-12 20:22:52
【问题描述】:
在 Java 中,我可以使用 Unicode.blockOf(Character) 来确定特定字符是否是日本汉字。我正在尝试对 QChar 做同样的事情,但找不到相关的函数来执行此操作。我想知道我是否只是错过了它,还是我必须自己推出,如果是这样 - 怎么做?
【问题讨论】:
在 Java 中,我可以使用 Unicode.blockOf(Character) 来确定特定字符是否是日本汉字。我正在尝试对 QChar 做同样的事情,但找不到相关的函数来执行此操作。我想知道我是否只是错过了它,还是我必须自己推出,如果是这样 - 怎么做?
【问题讨论】:
有QChar::Category,但它不能提供您需要的一切。
为了检查一个字符是否在一定范围内,你可以写一个这样的函数:
bool inRange(QChar c, ushort b, ushort e) {
return (c.unicode() >= b) && (c.unicode() <= e);
}
你可以这样使用它:
inRange(c, 0x3040, 0x309F); // Hiragana?
当然,您可以更进一步,使其更抽象并列举范围:
inRange(c, Range::Hiragana);
here 是 Unicode 块的列表
【讨论】:
我不知道是否有更好的 Qt 特定方法。如果没有,您可以尝试使用 ICU 而不是滚动您自己的解决方案。
ICU 既有“C/C++”版本,也有 Java 版本。 ICU 的 Java 版本实际上与 i18n/l10n 的一些 Java 标准库有一个共同的祖先,所以 C/C++ 版本希望你很容易理解。
【讨论】: