48 votes

\x Escape en Java ?

Je me demandais s'il existait un hexagone similaire ( \x ) d'échappement en Java comme il en existe en C++. Par exemple :

char helloworld[] = "\x48\x45\x4C\x4C\x4F\x20\x57\x47\x52\x4C\x44";
printf("%s", helloworld);

Il n'y a pas d'hexagone ( \x ) en Java d'après ce qu'il semble jusqu'à présent. Existe-t-il une alternative qui soit aussi facile à utiliser sans avoir à concaténer un tas de chiffres hexadécimaux ?

59voto

erickson Points 127945

Les chaînes de caractères en Java sont toujours codées en UTF-16, et il utilise donc un échappement Unicode : \u0048 . Les caractères octaux sont également pris en charge : \110

7voto

tschodt Points 21

Notez que les échappements Unicode sont analysés assez tôt. Cela peut être une surprise lorsque

  String s = "text\u000d\u000a";

provoque une erreur de compilation car vous auriez dû utiliser "text\015\012" ou "text\r\n"

3 votes

-1 : Les échappatoires octales sont autorisées dans les chaînes de caractères et ne sont pas analysées précocement comme vous le suggérez. L'extrait de code ci-dessus fonctionne comme prévu. Voir 3.10.6. Séquences d'échappement pour les littéraux de caractères et de chaînes de caractères dans le document 3.10.6. docs.oracle.com/javase/specs/jls/se7/html/jls-3.html

0 votes

@adrian - vous avez raison, je me suis trompé dans les échappatoires octales et les échappatoires unicodes - je vais corriger la réponse (si possible).

2 votes

Pourquoi ne pas supprimer la réponse ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X