Как я могу определить блок символа в Юникоде, в частности Qt QChar?

StackOverflow https://stackoverflow.com/questions/4423820

  •  09-10-2019
  •  | 
  •  

Вопрос

В 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 ++, надеюсь, будет легко выяснить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top