Unicode de conversion de chaîne de caractères en Java
Je suis la construction d'une langue, un jouet de la langue. La syntaxe \#0061
est censé convertir le format Unicode d'un caractère:
String temp = yytext().subtring(2);
Puis après ça, essayez d'ajouter des '\u'
à la chaîne, j'ai remarqué qu'a généré l'erreur.
J'ai aussi essayé de "\\" + "u" + temp;
cette façon de ne pas faire de conversion.
Je suis fondamentalement d'essayer de convertir Unicode d'un caractère en ne proposant que des '0061'
à une méthode d'aide.
- Notez que 16 bits (4 chiffres hexadécimaux) n'est pas suffisant pour représenter tous les caractères Unicode. En java "\u1234" correspond à un point de code unité en UTF-16, qui n'est pas le même comme un personnage.
- Addendum: En fait c'est la java de type de données char que les cartes de code UTF-16 point unités, et non pas réelles des caractères Unicode.
Vous devez vous connecter pour publier un commentaire.
Bande des " # " et l'utilisation
Integer.parseInt("0061", 16)
pour convertir les chiffres hexadécimaux pour unint
. Alors jetez unchar
.(Si vous l'aviez mis en œuvre le lexer à la main, l'sinon serait de faire la conversion à la volée comme votre analyseur lexical correspond à l'unicode littérale. Mais en relisant la question, je vois que vous êtes à l'aide d'un générateur d'analyseur lexical ... bonne initiative!)
yytext
, lex variable spécifiqueVous avez besoin pour gérer les mauvaises entrées et tels, mais qui va travailler autrement.
Vous avez besoin de convertir le particulier codepoint à un
char
. Vous pouvez le faire avec un peu d'aide de regex:Modifier que par les commentaires, si c'est un seul jeton, puis il suffit de faire:
Ask Question
bouton en haut à droite de poser une question sur lequel vous souhaitez obtenir des réponses.\uXXXX
est une séquence d'échappement. Avant l'exécution, il a déjà été converti en le caractère réel de la valeur, ce n'est pas "évalué" de toute façon au moment de l'exécution.Ce que vous voulez probablement à faire est de définir une cartographie de votre
#XXXX
syntaxe de points de code Unicode et de les jeter àchar
.