Imprimer littéral de chaîne unicode comme le caractère réel
Dans mon application Java j'ai été dépassé dans une chaîne qui ressemble à ceci:
"\u00a5123"
Lors de l'impression de cette chaîne dans la console, j'obtiens la même chaîne que la sortie (comme prévu).
Cependant, je veux imprimer en avoir l'unicode converti dans le symbole du yen (\u00a5 -> symbole du yen) - comment pourrais-je aller sur le faire?
c'est à dire si il ressemble à ceci: "[symbole du yen]123"
Donc, pour peut-être obtenir une meilleure idée de l'espace du problème, il n'y a pas moyen d'obtenir une bonne Chaîne unicode? Ce contexte est-ce utilisé? Est temps/vitesse d'une considération importante?
Aussi, existe-il des hypothèses de simplification? c'est à dire est-ce la seule fois qu'un "\u####" va se produire? Parce que vous pouvez utiliser une expression régulière pour sortir le nombre.
double possible de Howto ne pas encoder un Java littéral de chaîne en Java
Cela est nécessaire lors de l'exécution d'un programme java via groovy, où il interprète
Aussi, existe-il des hypothèses de simplification? c'est à dire est-ce la seule fois qu'un "\u####" va se produire? Parce que vous pouvez utiliser une expression régulière pour sortir le nombre.
double possible de Howto ne pas encoder un Java littéral de chaîne en Java
Cela est nécessaire lors de l'exécution d'un programme java via groovy, où il interprète
$
différemment. J'ai donc utiliser System.out.println("\u0024");
OriginalL'auteur digiarnie | 2009-09-10
Vous devez vous connecter pour publier un commentaire.
J'ai écrit un petit programme:
Elle est sortie:
c'est à dire la sortie de exactement ce que vous avez dit dans votre post. Je ne suis pas sûr qu'il n'est pas quelque chose d'autre se passe. Quelle est la version de Java que vous utilisez?
edit:
En réponse à vos éclaircissements, il ya un couple de techniques différentes. Le plus simple est de regarder pour un "\u" suivie par 4 code hexadécimal des personnages, de l'extrait de la pièce et de la remplacer par une version unicode avec l'hexadécimal (à l'aide de la classe de Caractères). Cela suppose bien sûr que la chaîne n'aura pas \u en face d'elle.
Je ne suis pas au courant de tout système particulier pour analyser la Chaîne, comme si c'était une codé en Java String.
Barre oblique inverse s'échapper est quelque chose que seul le compilateur Java doit traiter avec, pas la JVM ou de l'API. Il n'est donc pas surprenant de constater qu'il n'y a pas un moyen facile d'analyser ces chaînes au moment de l'exécution.
convenu, sur la seule chose que j'ai pu penser il est tentant d'utiliser le compilateur d'une certaine façon, mais qui semble être une difficulté pour moi.
OriginalL'auteur aperkins
Comme il a été mentionné avant, ces chaînes doivent être analysées pour obtenir le résultat souhaité.
Marquer la chaîne à l'aide de \u comme séparateur. Par exemple:
\u63A5\u53D7 => { "63A5", "53D7" }
Processus de ces chaînes comme suit:
OriginalL'auteur Abhinav Maheshwari
Vous allez probablement avoir à écrire un parser pour ceux-ci, sauf si vous pouvez en trouver un dans une librairie tierce. Il n'y a rien dans le JDK pour analyser ces pour vous, je le sais parce que j'ai assez récemment eu l'idée d'utiliser ce genre d'évasions, comme un moyen pour la contrebande d'unicode par le biais d'un Latin-1 seule base de données. (J'ai fini par faire quelque chose d'autre d'ailleurs)
Je vais vous dire que java.util.Propriétés échappe et unescapes des caractères Unicode dans cette manière lors de la lecture et de l'écriture de fichiers (puisque les fichiers doivent être au format ASCII). Les méthodes qu'il utilise pour ce sont privés, donc vous ne pouvez pas les appeler, mais vous pouvez utiliser le JDK code source pour inspirer votre solution.
Properties
classe.OriginalL'auteur Licky Lindsay
Pourrait remplacer le ci-dessus:
Voici le code pour imprimer la totalité de la zone de construction de caractères unicode.
OriginalL'auteur Joel Swanson