Formatage de la chaîne Java

Formatage de la chaîne Java
Formatage d'une chaîne, permet d'inserter d'autres caractères, sous-traces ou valeurs numériques, dans une chaîne principale, d'une manière particulière. Considérez le code: chaîne str = chaîne.format ("Il y a% s,% s,% s et% s."," orange "," banane "," poire "," citron ");
Système.dehors.println (str);

La sortie est:

Il y a de l'orange, de la banane, de la poire et du citron.

Il y a cinq arguments dans ce format statique () de la classe de chaîne. Le premier argument est la principale chaîne d'intérêt, dont le contenu a quatre espaces réservés, chacun étant% s. Ensemble, les autres arguments sont appelés une liste d'arguments. Tout étant égal, le premier argument de la liste d'arguments correspond au premier espace réservé de la chaîne principale (à gauche). Le deuxième argument de la liste correspond au deuxième espace réservé de la chaîne principale. Le troisième argument de la liste d'arguments correspond au troisième espace réservé de la chaîne principale, et ainsi de suite. À la sortie, les espaces réservés sont remplacés par leurs arguments correspondants de manière prédéterminée à partir de la liste des arguments.

Cinq arguments sont considérés ici. Le tout premier ne fait pas partie de la liste des arguments considérés. Il est en fait appelé la chaîne de format, bien qu'elle soit toujours à formater. C'est toujours une chaîne. Le reste des arguments, formant la liste des arguments, peut être de différents types, pas nécessairement, des cordes. Remarque: Un espace réservé ici est appelé spécificateur de format.

Tous les arguments ci-dessus peuvent être remplacés par des variables, comme le montre le segment de code suivant:

String a = "orange", b = "banane", c = "Pear", d = "citron";
String fmtstr = "Il y a% s,% s,% s et% s."
Chaîne str = chaîne.Format (FMTSTR, A, B, C, D);
Système.dehors.println (str);

Cet article explique les bases de la mise en forme d'une chaîne en Java à l'aide de spécificateurs de format.

Syntaxe de spécificateur de format

La syntaxe du spécificateur de format est:

% [argument_index $] [drapeaux] [largeur] [.Conversion de précision]

Il doit commencer par le pourcentage de signe,%. Il doit se terminer par un personnage appelé la conversion. Dans le code ci-dessus, chaque spécificateur se compose de% et «s». «S» est la conversion. «S» signifie String. Les autres paramètres, indiqués dans des crochets dans la syntaxe, sont facultatifs et sont expliqués ci-dessous.

argument_index $
argument_index est un entier décimal. Ça commence à partir de 1. Il peut être de 1 $, 2 $, 3 $, etc. Les correspondances normales pour les spécificateurs et les arguments dans la liste des arguments sont les suivantes: Le premier spécificateur de gauche, dans la chaîne de format, correspond au premier argument dans la liste d'argument (à partir de la gauche); Le deuxième spécificateur de la gauche, dans la chaîne de format, correspond au deuxième argument de la liste des arguments; Le troisième spécificateur de la gauche, dans la chaîne de format, correspond au troisième argument de la liste des arguments; et ainsi de suite. argument_index peut être utilisé pour modifier cet ordre. Le segment de code suivant inverse la commande:

Chaîne str = chaîne.Format ("Ici:% 4 $ C,% 3 $ C,% 2 $ C et% 1 $ C", '1', '2', '3', '4');
Système.dehors.println (str);

La sortie est:

Ici: 4, 3, 2 et 1

'C' dans un spécificateur correspond à un personnage dans la liste d'arguments. La commande normale est de 1 $, 2 $, 3 $, 4 $. Puisque cette commande a été inversée dans la chaîne de format, la sortie est donc sortie dans l'ordre inverse.

Conversion

La conversion dans le formatage des chaînes est un caractère spécial. Chaque spécificateur de format, avec sa conversion, correspond à un argument dans la liste des arguments. Une conversion est un personnage. Le tableau suivant donne des conversions et leur signification:

Personnages de conversion et leur signification
Conversion Signification
b Pour formater un argument booléen
c Pour formater un argument qui est un personnage Unicode
s Pour formater un argument qui est une chaîne
d Pour formater un argument qui est un entier décimal
F Pour formater un argument qui est un nombre avec un point décimal
% Pour l'impression seulement% pour l'argument, «%»
n Pour provoquer le reste du texte à sa droite, aller sur la ligne suivante à la sortie

L'utilisation de «S» et de «C» a été illustrée ci-dessus. Le reste des méta-personnages de conversion sera illustré dans cette section.

Le caractère de conversion b
Le segment de code suivant montre comment un spécificateur de format pour un bool est remplacé par la valeur booléenne de son argument correspondant:

Chaîne str = chaîne.format ("c'est% b qu'il est passé.", vrai);
Système.dehors.println (str);

La sortie est:

Il est vrai qu'il est passé.

Notez que l'argument, vrai, n'est pas entre citations.

Le caractère de conversion d
Le segment de code suivant montre comment un spécificateur de format pour un entier décimal est remplacé par la valeur de son argument correspondant:

Chaîne str = chaîne.format ("J'ai% d stylos.", 5);
Système.dehors.println (str);

La sortie est:

J'ai 5 stylos.

Notez que l'argument, 5, n'est pas sous citations car ce n'est pas un personnage.

Le caractère de conversion F
Le segment de code suivant montre comment un spécificateur de format pour un nombre avec un point décimal est remplacé par sa valeur d'argument correspondante:

Chaîne str = chaîne.format ("% f est une mauvaise fraction.", 2.5);
Système.dehors.println (str);

Tout d'abord, notez que l'argument, 2.5, n'est pas en citations car ce n'est pas une chaîne. La sortie est:

2.500000 est une fraction incorrecte.

2.5 a été formaté à 2.500000, le formatage par défaut. Il peut être limité à 2.5 comme indiqué - voir ci-dessous.

Le% de caractère de conversion
Étant donné que le symbole en pourcentage est utilisé pour identifier le spécificateur de format, un schéma doit être développé pour avoir le symbole% comme caractère ordinaire dans la chaîne de format. Le schéma est simple: avoir% comme argument de caractère dans la liste des arguments. Ensuite, utilisez le caractère de conversion% en position dans la chaîne de format, où le symbole en pourcentage doit apparaître. Le segment de code suivant l'illustre:

Chaîne str = chaîne.format ("c'est 100 %%.", '%');
Système.dehors.println (str);

La sortie est:

C'est 100%.

Le spécificateur de format est %%. Le premier% de la paire, %%, est ce qui identifie le spécificateur. Le deuxième% est le caractère de conversion. Comme argument,% est en citations uniques.

Le caractère de conversion n
Pour faire en sorte que le reste du texte à droite de la chaîne de format se déroule sur la ligne suivante à la sortie, utilisez n. n est un caractère de conversion à utiliser dans un spécificateur de format. Illustration:

Chaîne str = chaîne.format ("première phrase.% de phrase NSEcond.", '\ n');
Système.dehors.println (str);

La sortie est:

Première phrase.
Deuxième phrase.

Le .Paramètre de précision du spécificateur de format

Ce paramètre indique le nombre de décimales pour un nombre avec des décimales. C'est un nombre entier précédé par le point. Comme indiqué ci-dessus, le nombre attendu de décimales pour 2.5 est un caractère; Mais 6 caractères ont été utilisés, donnant 2.500000. Le segment de code suivant limite cela à 3 décimales:

Chaîne str = chaîne.format("%.3f est une fraction incorrecte.", 2.5);
Système.dehors.println (str);

La sortie est:

2.500 est une fraction incorrecte.

Le code de précision ici est .3 .

Le paramètre de largeur du spécificateur de format

La largeur est le nombre minimum de caractères pour le remplacement dans la chaîne de format. Certains types d'arguments remplacent le spécificateur de format par leur largeur attendue. Cependant, d'autres peuvent le remplacer par une largeur plus petite ou plus grande. Comme remarqué ci-dessus, la largeur attendue pour 2.5 est trois caractères; Mais 8 caractères ont été utilisés, donnant 2.500000. Le segment de code suivant doit limiter cela à une largeur de 4 caractères et à trois décimales:

Chaîne str = chaîne.format ("% 4.3f est une fraction incorrecte.", 2.5);
Système.dehors.println (str);

La sortie est:

2.500 est une fraction incorrecte.

Le spécificateur de format est% 4.3f, où 4 est la largeur, et 3 est le nombre de décimales. Il y a en fait 5 caractères à la sortie, y compris le point décimal, donc 4 ont en fait été ignorés. Le segment de code suivant produit une largeur de 7 caractères et 3 décimales:

Chaîne str = chaîne.format ("% 7.3f est une fraction incorrecte.", 2.5);
Système.dehors.println (str);

La sortie est:

"" 2.500 est une fraction incorrecte.

Notez que deux caractères d'espace précèdent le numéro pour le numéro complet pour compenser une largeur de sept caractères. Le nombre de décimales est 3 . Il y a 7 personnages ici, tous ensemble, y compris le point décimal.

Le paramètre Flags du spécificateur de format

Le 0 drapeau 0
Au lieu de précéder un nombre avec des espaces, le nombre peut être précédé de 0. Le segment de code suivant l'illustre:

Chaîne str = chaîne.format ("% 07.3f est une fraction incorrecte.", 2.5);
Système.dehors.println (str);

La sortie est:

002.500 est une fraction incorrecte.

Le spécificateur de format exact ici est,

% 07.3f

qui doit être comparé à la syntaxe du spécificateur de format,

% [argument_index $] [drapeaux] [largeur] [.Conversion de précision]

L'ordre des méta-personnages du spécificateur de format exact respecte l'ordre de la syntaxe du spécificateur de format. Le drapeau facultatif, 0, vient avant la largeur en option, 7, qui est avant la précision facultative, .3, conformément à la syntaxe. 'F' est la conversion (toujours un méta-personnage).

Le + drapeau
Avec le drapeau +, le résultat entier est toujours précédé de - ou + . Le programme suivant illustre ceci:

Chaîne str = chaîne.format ("Le résultat est% + d euros.", -5);
Système.dehors.println (str);

La sortie est:

Le résultat est -5 euros.

La largeur et les paramètres de précision en option ne sont pas inclus avec le spécificateur de format exact,% + D. Ici, D est la conversion de l'entier.

Considérez le segment de code,

Chaîne str = chaîne.format ("Le résultat est% + d euros.", 5);
Système.dehors.println (str);

La sortie est,

Le résultat est +5 euros.

Conclusion

Les arguments pour la méthode du format de chaîne sont divisés en deux sections. La première section est le premier argument, qui doit être une chaîne. C'est la chaîne d'intérêt. Il est appelé la chaîne de format, bien qu'elle ait encore certaines de ses sous-traces appropriées (formatées). Les autres arguments sont appelés la liste des arguments. La liste d'arguments a la vraie sous-lamelle qui nécessite une mise en forme. Chacune de ces sous-chaînes correspond à un spécificateur de format dans la chaîne de format. Le spécificateur de format utilise des méta-caractères pour formater.