¿Cómo puedo determinar el bloque de Unicode de un carácter, en concreto una Qt QChar?

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

  •  09-10-2019
  •  | 
  •  

Pregunta

En Java, yo era capaz de determinar si un personaje en particular era por ejemplo, un Kanji japonés usando Unicode.blockOf (Personaje). Estoy tratando de hacer lo mismo para un QChar, pero no pude encontrar una función relevante para hacer esto. Me pregunto si me olvidaron, o voy a tener que rodar la mía, y si es así - ¿cómo

¿Fue útil?

Solución

Hay QChar :: Categoría sin embargo, no proporciona todo lo que necesitas.

Para comprobar si un char es en cierto rango, se podría escribir una función como esta:

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

A continuación, puede utilizar de esta manera:

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

Por supuesto que podría ir más allá y hacer que sea más abstracto y enumerar los rangos:

inRange(c, Range::Hiragana);

aquí es la lista de los bloques Unicode

Otros consejos

No sé si hay un mejor enfoque específico Qt. Si no es usted podría tratar de usar UCI en lugar de rodar su propia solución.

UCI tiene tanto una "C / C ++" y una versión de Java. La versión Java de la UCI en realidad, comparten un ancestro común con algunas de las bibliotecas estándar de Java para i18n / l10n, por lo que la versión de C / C ++ se espera que sea fácil para usted para averiguar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top