JavaRush /Blog Java /Random-FR /Échapper des caractères en Java
Oleksandr Klymenko
Niveau 13
Харків

Échapper des caractères en Java

Publié dans le groupe Random-FR
Quelque chose s'est mal passé ! Cet article a été rédigé comme un test pour un poste dans l'équipe JavaRush. Et cela a été écrit comme une conférence à part entière. De ce fait, je vous garantis la qualité et la quantité des connaissances utiles accumulées dans ce poste. En plus des informations pratiques et théoriques, l'article contient des faits intéressants que vous ne connaissez peut-être même pas ! Caractères d'échappement en Java - 1Bonjour le monde! L'évasion de personnages est une solution technique très intéressante et nécessaire. Le besoin d’évasion des personnages a joué un rôle important dans l’histoire de l’ensemble de l’industrie de la programmation. Dans cet article, nous parlerons de ce qu'est l'échappement de caractères, pourquoi il est nécessaire de les échapper et comment l'échappement de caractères est implémenté en Java. L'article fournira des exemples et des faits intéressants liés au thème de la fuite des personnages. Bonne lecture! Toutes les informations contenues dans un système informatique sont représentées sous forme de texte, qui à un niveau inférieur est représenté par des octets. Lorsque nous écrivons une lettre ou un message, nous tapons un texte qui sera compréhensible pour une personne. Lorsque nous écrivons du code dans l’EDI, nous tapons du texte que le compilateur peut analyser. En Java, le texte peut être représenté comme un type Stringdont les données sont représentées par des caractères de contrôle - des guillemets appariés.
String str = "Hello World!";
Avec le texte « Hello World ! » aucun problème ne se pose, mais que se passe-t-il si le même texte doit être souligné au discours direct ? En utilisant les règles de grammaire, il devient clair que le texte « Hello World ! », en plus des caractères de contrôle du type String, doit être placé entre guillemets directs.
String str = "Java said, "Hello World!"";
Cette option ne fonctionnera pas, car le compilateur ne comprendra tout simplement pas à quel moment se termine l'initialisation de la variable str. Pour résoudre ce problème et des problèmes similaires, il a été inventé pour échapper aux caractères , c'est-à-dire remplacer les caractères de contrôle par des séquences de contrôle, également appelées séquences d'échappement . Vous trouverez ci-dessous une liste de séquences d'échappement Java valides à utiliser dans les chaînes. \t — Caractère de tabulation (en Java – l'équivalent de quatre espaces) ; \b— Un caractère de retour dans le texte en reculant ou la suppression d'un caractère dans une ligne (retour arrière) ; \n— Nouveau symbole de ligne ; \r— Symbole de retour chariot ; \f— Passer la page au début de la page suivante ; \'— Caractère guillemet simple ; \"— Caractère guillemet double ; \\— Le caractère barre oblique inverse ( \). Soulignons maintenant le discours direct dans notre phrase afin que le compilateur puisse facilement analyser ce qui est écrit.
String str = "Java said, \"Hello World!\"";
Ainsi, le texte écrit est compréhensible à la fois par le compilateur et par une personne si le contenu de la variable strest affiché à l'écran. Nous avons compris ce qu'est l'évasion d'un personnage et pourquoi elle est nécessaire. Et ils ont même échappé aux guillemets doubles ! Passons à l'analyse des séquences d'échappement restantes. Le caractère de tabulation dans une ligne est indiqué par une séquence d'échappement \tet est analogue à quatre espaces. Cependant, si la longueur d'une chaîne composée de quatre espaces est égale à la longueur de quatre caractères, alors la longueur d'une chaîne avec un caractère de tabulation sera égale à un. Le caractère de tabulation est souvent utilisé pour construire des tableaux ou des éléments d'interface pseudo-graphique , car... C'est plus pratique que d'écrire quatre espaces. Vous trouverez ci-dessous un exemple d'interface pseudo-graphique. Échapper des caractères en Java - 2Parmi toutes les séquences d'échappement, le symbole est \bpeut-être le plus intéressant, car il nous permet de supprimer le dernier caractère de la ligne de sortie, comme si nous l'effacions en appuyant sur la touche retour arrière .
System.out.print("2 + 2 = 5"); // Screen displays 2 + 2 = 5
System.out.print("\b");// Screen displays 2 + 2 =
System.out.print("4");// Screen displays 2 + 2 = 4
Les symboles \nont \rune histoire commune – regardons-les ensemble. Vous avez peut-être déjà rencontré le caractère de saut de ligne \n. Par exemple, si une méthode println()génère des informations afin que la sortie suivante soit sur une nouvelle ligne, alors la méthode print()n'effectue pas de saut de ligne après la sortie, mais si vous ajoutez un caractère à la fin de la sortie \n, alors un saut de ligne sera réalisée.
System.out.print("Next output will be on a new line\n");
System.out.println("Next output will be on a new line");
Le caractère de retour chariot \rnous permet de ramener le curseur au début de la ligne de sortie et d'afficher de nouvelles informations comme s'il n'y avait rien auparavant sur cette ligne.
System.out.print("Text to be rewritten.");//The screen displays "Text to be rewritten."
System.out.print('\r');//The screen is blank
System.out.print("New text.");//The screen displays "New text."
En fait, le retour chariot remonte à l’époque où le texte était imprimé sur des machines à écrire. Pour effectuer un saut de ligne, il était nécessaire de déplacer le chariot et d'abaisser le levier (qui fait partie du mécanisme de la machine à écrire), après quoi le saut de ligne serait effectué. Si le levier n'était pas abaissé, on pourrait alors continuer à imprimer sur la même ligne. C'est ce que l'on observe lorsque l'on affiche le symbole \r. À cet égard, lorsque le programmeur voulait effectuer un saut de ligne, il exécutait par habitude une séquence de caractères à la fin de la sortie \r\n. À la fin de l’ère de la machine à écrire, une génération de programmeurs utilisait encore cette séquence, même s’ils n’avaient jamais eux-mêmes travaillé sur une machine à écrire. Ils oubliaient souvent dans quel ordre ils devaient terminer une séquence donnée - \r\nou \n\r. Puis un mot test leur est venu en aide return, où l'ordre dans lequel ces symboles étaient affichés était clairement visible. Cependant, plus tard, lors du développement de logiciels pour les premières versions de Windows, après MS-DOS, les programmeurs ont été contraints d'utiliser la séquence \r\n. Désormais, vous n'avez plus à vous soucier de cela et utilisez uniquement le caractère pour couper une ligne \n. Caractères d'échappement en Java - 3Remontons le temps, vers les années 80. C’est alors que le symbole de la page en avant \fjusqu’au début de la page suivante est devenu populaire. À cette époque, il existait des imprimantes à grande ligne, pour travailler avec lesquelles il était nécessaire d'écrire du code de programme contenant quoi et comment l'imprimante devait imprimer. Et pour indiquer que le texte doit commencer à partir d'une nouvelle page, le symbole a été utilisé \f. À notre époque, ce symbole a depuis longtemps perdu de sa pertinence et il est peu probable que vous le rencontriez un jour. Les dimensions de l'imprimante linéaire sont assez impressionnantes. Échapper des caractères en Java - 4Avec les symboles \’et \\tout est exactement pareil qu'avec l'échappement d'un guillemet double, il y avait un exemple au début de l'article. Vous devrez par exemple échapper un guillemet simple pour initialiser le type char avec un guillemet simple.
char ch = '\'';
Échappez la barre oblique inverse pour indiquer que le caractère suivant ne fera pas partie de la séquence d'échappement.
System.out.println("\\n - line break escape sequence");
// Output: \n - line break escape sequence
En pratique, vous devez souvent éviter les barres obliques inverses lorsque vous travaillez avec des chemins :
System.out.println("It's Java string: \"C:\\Program Files\\Java\\jdk1.7.0\\bin\"");
// Output: It's Java string: "C:\Program Files\Java\jdk1.7.0\bin"
J'ai souligné que ces séquences d'échappement sont utilisées dans les chaînes (littéraux de chaîne), car le reste est utilisé pour décrire les expressions régulières de classe Patternet n'est pas pertinent pour le sujet de cet article. Ici vous pouvez voir une liste de toutes les séquences d'échappement pour la classe Pattern. Cependant, il convient de noter que les expressions régulières sous la forme sous laquelle elles existent actuellement ne peuvent être imaginées sans l'utilisation de séquences d'échappement, non seulement en Java, mais également dans d'autres langages de programmation populaires, par exemple PHP. En Java, l'échappement de caractères est également utilisé dans le formatage des chaînes. Par exemple, lorsque vous spécifiez un format de chaîne pour afficher le symbole de pourcentage, vous devez dupliquer le symbole de pourcentage - %%, sinon nous obtiendrons une erreur et l'IDE vous demandera d'ajouter le pourcentage.
System.out.printf("Milk fat percentage : %d%%", 10);
// Milk fat percentage : 10%
Ceci conclut l’article. J'espère que vous avez beaucoup appris sur l'évasion des personnages et sur la façon de la mettre en pratique. L'échappement de caractères est inhérent à de nombreux langages de programmation. En Java, comme dans d’autres langages de type C, cette technologie est implémentée de manière presque identique. Par conséquent, les connaissances que vous acquérez grâce à cet article pourraient bien être utiles non seulement en Java. Merci de votre attention et bonne chance dans vos études !
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION