Come è possibile determinare il blocco Unicode di un carattere, in particolare un Qt QChar?

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

  •  09-10-2019
  •  | 
  •  

Domanda

In Java, sono stato in grado di determinare se un personaggio particolare, era per esempio, un Kanji giapponese utilizzando Unicode.blockOf (Personaggio). Sto cercando di fare lo stesso per un QChar, ma non sono riuscito a trovare una funzione rilevante per fare questo. Mi chiedo se ho appena perso, o dovrò rotolare il mio, e se sì - come

È stato utile?

Soluzione

QChar :: Categoria tuttavia non fornisce tutto ciò di cui hai bisogno.

Per verificare se un char è in certo intervallo, si potrebbe scrivere una funzione come questa:

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

È quindi possibile utilizzare in questo modo:

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

Naturalmente si potrebbe andare oltre e rendere più astratta ed enumerare le gamme:

inRange(c, Range::Hiragana);

qui è la lista dei blocchi Unicode

Altri suggerimenti

Non so se c'è un migliore approccio specifico Qt. Se non c'è si potrebbe provare a utilizzare ICU piuttosto che rotolare la vostra soluzione.

ICU ha sia un "C / C ++" versione e una versione di Java. La versione Java di terapia intensiva condivide in realtà un antenato comune con alcune delle librerie standard Java per i18n / l10n, quindi la versione C / C ++, si spera, sarà facile per voi per capire.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top