CodeGym/Blog Java/Random-FR/Caractères d'échappement Java
Auteur
Vasyl Malik
Senior Java Developer at CodeGym

Caractères d'échappement Java

Publié dans le groupe Random-FR
membres
Salut! Dans les leçons précédentes, nous nous sommes déjà familiarisés avec les chaînes de texte, qui sont représentées par la classe String en Java. Comme vous vous en souvenez probablement, une chaîne est une séquence de caractères. Ces caractères peuvent être des lettres, des chiffres, des signes de ponctuation, etc. L'essentiel lors de la création d'une chaîne est que la séquence entière doit être entourée de guillemets :
public class Main {
   public static void main(String[] args) {
       String alex = new String ("My name is Alex. I'm 20!");
   }
}
Mais que fait-on si on a besoin de créer une chaîne qui elle-même doit contenir des guillemets ? Par exemple, supposons que nous voulions parler au monde de votre livre préféré :
public class Main {
   public static void main(String[] args) {
       String myFavoriteBook = new String ("My favorite book is "Twilight" by Stephanie Meyer");
   }
}
Il semble que le compilateur soit mécontent de quelque chose ! Que pensez-vous que le problème pourrait être? Et qu'est-ce que cela a à voir avec les guillemets? En fait, tout est très simple. Le compilateur interprète les guillemets d'une manière très spécifique, c'est-à-dire qu'il s'attend à ce que les chaînes y soient enveloppées. Et chaque fois que le compilateur voit ", il s'attend à ce que le guillemet soit suivi d'un deuxième guillemet, et que le contenu entre eux soit le texte d'une chaîne à créer par le compilateur. Dans notre cas, les guillemets autour le mot "Twilight" sont à l'intérieur d'autres guillemets . Lorsque le compilateur atteint ce morceau de texte, il ne comprend tout simplement pas ce qu'il est censé faire. Le guillemet suggère qu'une chaîne doit être créée. Mais c'est ce que le compilateur est déjàaction! Voici pourquoi : simplement parlant, le compilateur est confus quant à ce qu'il est censé faire. "Un autre guillemet ? Est-ce une sorte d'erreur ? Je suis déjà en train de créer une chaîne ! Ou devrais-je en créer un autre ? Argh !...:/" Nous devons indiquer au compilateur qu'un guillemet est une commande ( "créer une chaîne !") et lorsqu'il s'agit simplement d'un caractère ("afficher le mot "Twilight" avec des guillemets !"). Pour ce faire, Java utilise l'échappement de caractères . Ceci est accompli en utilisant un symbole spécial : \ . Ce symbole est normalement appelé "barre oblique inverse". En Java, une barre oblique inverse combinée à un caractère à "échapper" est appelée une séquence de contrôle . Par exemple, \"est une séquence de contrôle pour afficher des guillemets à l'écran. En rencontrant cette construction dans votre code, le compilateur comprendra qu'il ne s'agit que d'un guillemet qui doit être affiché à l'écran. Essayons de changer notre code avec le livre :
public static void main(String[] args) {
       String myFavoriteBook = new String ("My favorite book is \"Twilight\" by Stephanie Meyer");
       System.out.println(myFavoriteBook);
   }
}
Nous avons utilisé \ pour échapper nos deux guillemets "internes". Essayons d'exécuter la méthode main() ... Sortie de la console :
My favorite book is "Twilight" by Stephanie Meyer
Excellent! Le code a fonctionné exactement comme nous le voulions ! Les guillemets ne sont en aucun cas les seuls caractères que nous pourrions avoir besoin d'échapper. Supposons que nous voulions parler à quelqu'un de notre travail :
public class Main {
   public static void main(String[] args) {
       String workFiles= new String ("My work files are in D:\Work Projects\java");
       System.out.println(workFiles);
   }
}
Encore une erreur ! Pouvez-vous deviner pourquoi? Encore une fois, le compilateur ne sait pas quoi faire. Après tout, le compilateur ne connaît pas \ comme autre chose qu'une séquence de contrôle ! Il s'attend à ce que la barre oblique inverse soit suivie d'un certain caractère qu'il doit en quelque sorte interpréter d'une manière spéciale (comme un guillemet). Mais, dans ce cas, \ est suivi de lettres ordinaires. Ainsi, le compilateur est à nouveau confus. Que devrions nous faire? Exactement la même chose qu'avant : on ajoute juste un autre \ à notre \ !
public class Main {

   public static void main(String[] args) {

       String workFiles= new String ("My work files are in D:\\Work Projects\\java");
       System.out.println(workFiles);

   }
}
Voyons ce que nous obtenons : sortie de la console :
My work files are in D:\Work Projects\java
Super! Le compilateur détermine immédiatement que les \ sont des caractères ordinaires qui doivent être affichés avec le reste. Java a beaucoup de séquences de contrôle. Voici la liste complète :
  • \t - onglet.
  • \b - retour arrière (un pas en arrière dans le texte ou la suppression d'un seul caractère).
  • \n - nouvelle ligne.
  • \r - retour chariot. ()
  • \f - saut de page.
  • \' apostrophe.
  • \" guillemet double.
  • \\ barre oblique inverse.
Ainsi, si le compilateur rencontre \n dans le texte, il comprend qu'il ne s'agit pas simplement d'un symbole et d'une lettre à afficher sur la console, mais plutôt d'une commande spéciale pour "passer à une nouvelle ligne !". Par exemple, cela peut être utile si nous voulons afficher une partie d'un poème :
public class Main {
   public static void main(String[] args) {
       String byron = new String ("She walks in beauty, like the night, \nOf cloudless climes and starry skies\nAnd all that's best of dark and bright\nMeet in her aspect and her eyes...");
       System.out.println(byron);
   }
}
Voici ce que nous obtenons : sortie de la console :
She walks in beauty, like the night,
Of cloudless climes and starry skies
And all that's best of dark and bright
Meet in her aspect and her eyes...
Juste ce que nous voulions! Le compilateur a reconnu la séquence d'échappement et a produit un extrait du poème sur 4 lignes.

Caractères d'échappement Unicode

Un autre sujet important que vous devez connaître en relation avec les caractères d'échappement est Unicode. Unicode est un codage de caractères standard qui inclut les symboles de presque toutes les langues écrites du monde. En d'autres termes, il s'agit d'une liste de codes spéciaux qui représentent presque tous les caractères dans n'importe quelle langue ! Naturellement, c'est une très longue liste et personne ne l'apprend par cœur :) Si vous voulez savoir d'où elle vient et pourquoi elle est devenue nécessaire, lisez cet article informatif : https://docs.oracle.com/javase/tutorial/ i18n/text/unicode.html Tous les codes de caractères Unicode ont la forme " u+<chiffre hexadécimal>". Par exemple, le symbole de copyright bien connu est représenté par u00A9. Ainsi, si vous avez besoin d'utiliser ce caractère lorsque vous travaillez avec du texte en Java, vous pouvez l'échapper dans votre texte ! Par exemple, nous voulons pour informer tout le monde que CodeGym détient les droits d'auteur de cette leçon :
public class Main {
   public static void main(String[] args) {
       System.out.println("\"Escaping characters\", \u00A9 2019 CodeGym");
   }
}
Sortie console :
"Escaping characters", © 2019 CodeGym
Super, tout s'est bien passé ! Mais il ne s'agit pas seulement de symboles spéciaux ! Vous pouvez utiliser Unicode et des caractères d'échappement pour coder du texte écrit simultanément dans différentes langues. Et même des textes rédigés dans plusieurs dialectes différents d'une même langue !
public class Main {
   public static void main(String[] args) {

       System.out.println("\u004d\u0061\u006f \u005a\u0065\u0064\u006f\u006e\u0067 " +

               "\u0028\u0054\u0072\u0061\u0064\u0069\u0074\u0069\u006f\u006e\u0061\u006c " +

               "\u0043\u0068\u0069\u006e\u0065\u0073\u0065\u003a \u6bdb\u6fa4\u6771\u002c " +

               "\u0053\u0069\u006d\u0070\u006c\u0069\u0066\u0069\u0065\u0064 " +

               "\u0043\u0068\u0069\u006e\u0065\u0073\u0065\u003a \u6bdb\u6cfd\u4e1c\u002c " +

               "\u0050\u0069\u006e\u0079\u0069\u006e\u003a \u004d\u00e1\u006f " +

               "\u005a\u00e9\u0064\u014d\u006e\u0067\u0029 \u0077\u0061\u0073 \u0061 " +

               "\u0032\u0030\u0074\u0068\u002d\u0063\u0065\u006e\u0074\u0075\u0072\u0079 " +

               "\u0043\u0068\u0069\u006e\u0065\u0073\u0065 " +

                "\u0073\u0074\u0061\u0074\u0065\u0073\u006d\u0061\u006e\u002c " +

               "\u0070\u006f\u006c\u0069\u0074\u0069\u0063\u0069\u0061\u006e\u002c " +

               "\u0061\u006e\u0064 \u0074\u0068\u0065 \u0063\u0068\u0069\u0065\u0066 " +

               "\u0074\u0068\u0065\u006f\u0072\u0065\u0074\u0069\u0063\u0069\u0061\u006e " +

               "\u006f\u0066 \u004d\u0061\u006f\u0069\u0073\u006d\u002e");
   }
}
Sortie console :
Mao Zedong (Traditional Chinese: 毛澤東, Simplified Chinese: 毛泽东, Pinyin: Máo Zédōng) was a 20th-century Chinese statesman, politician, and the chief theoretician of Maoism.
Dans cet exemple, nous avons utilisé des codes de caractères pour créer une chaîne composée d'anglais et de trois (!) types différents de caractères chinois - traditionnels, simplifiés et latins (Pinyin). Et ça, ça résume! Vous en savez maintenant assez sur les caractères d'échappement pour utiliser cet excellent outil dans votre travail :) Pour renforcer ce que vous avez appris, nous vous suggérons de regarder une leçon vidéo de notre cours Java
Commentaires
  • Populaires
  • Nouveau
  • Anciennes
Tu dois être connecté(e) pour laisser un commentaire
Cette page ne comporte pas encore de commentaires