Как я могу определить блок Unicode символа, в частности Qt QChar? - PullRequest
3 голосов
/ 12 декабря 2010

В Java я смог определить, является ли конкретный символ, например, японским кандзи, с помощью Unicode.blockOf (Character).Я пытаюсь сделать то же самое для QChar, но не могу найти соответствующую функцию для этого.Мне интересно, если я просто пропустил это, или я должен буду катиться самостоятельно, и если так - как?

Ответы [ 2 ]

4 голосов
/ 13 декабря 2010

Существует 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);

И здесь - список блоков Unicode

0 голосов
/ 12 декабря 2010

Я не знаю, есть ли лучший подход к Qt.Если нет, вы можете попробовать использовать ICU , а не использовать собственное решение.

ICU имеет как версию "C / C ++", так и версию Java.Java-версия ICU на самом деле имеет общего предка с некоторыми стандартными библиотеками Java для i18n / l10n, поэтому, надеюсь, вам будет легко выяснить версию C / C ++.

...