Comment puis-je déterminer le bloc Unicode d'un caractère, en particulier un Qt QChar?

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

  •  09-10-2019
  •  | 
  •  

Question

En Java, j'ai pu déterminer si un caractère particulier était par exemple un Kanji japonais en utilisant Unicode.blockOf (Personnage). Je suis en train de faire la même chose pour un QChar, mais n'a pas pu trouver une fonction utile de le faire. Je me demande si je viens de manquer, ou je devrai rouler ma propre, et si oui - comment

Était-ce utile?

La solution

Il est QChar :: Catégorie mais il ne fournit pas tout ce dont vous avez besoin.

Pour vérifier si un caractère est dans certaine gamme, vous pouvez écrire une fonction comme ceci:

bool inRange(QChar c, ushort b, ushort e) {
    return (c.unicode() >= b) && (c.unicode() <= e);
}

Vous pouvez alors l'utiliser comme ceci:

inRange(c, 0x3040, 0x309F); // Hiragana?

Bien sûr, vous pouvez aller plus loin et de le rendre plus abstrait et d'énumérer les gammes:

inRange(c, Range::Hiragana);

est la liste des blocs Unicode

Autres conseils

Je ne sais pas s'il y a une meilleure approche spécifique Qt. S'il n'y a pas que vous pouvez essayer d'utiliser ICU plutôt que de rouler votre propre solution.

ICU a à la fois un "C / C ++" la version et une version Java. La version Java de soins intensifs partage en fait un ancêtre commun avec certaines des bibliothèques Java standard pour i18n / l10n, de sorte que la version C / C, nous l'espérons être facile pour vous de comprendre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top