Как я могу определить блок символа в Юникоде, в частности 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. Версия Java ICU на самом деле разделяет общий предком с некоторыми из стандартных библиотек Java для I18N / L10N, поэтому версия C / C ++, надеюсь, будет легко выяснить.