Comment faire pour formater les chaînes de caractères en Java
Primitive question, mais comment puis-je format des chaînes de caractères comme ceci:
"Étape {1} de {2}"
par la substitution de variables à l'aide de Java? En C#, c'est facile.
Vous devez vous connecter pour publier un commentaire.
En plus de Chaîne.format, jetez aussi un oeil
java.texte.MessageFormat
. Le format le moins laconique et un peu plus près l'exemple en C# vous avez fournis, et vous pouvez l'utiliser pour l'analyse en tant que bien.Par exemple:
Un plus bel exemple prend avantage de la varargs et l'autoboxing améliorations dans Java 1.5 et tourne le ci-dessus dans un one-liner:
MessageFormat
est un peu plus agréable pour faire i18nized pluriels avec le choix de modificateur. Pour spécifier un message qui utilise correctement la forme du singulier lorsqu'une variable est de 1 et le pluriel sinon, vous pouvez faire quelque chose comme ceci:MessageFormat.format("Number {0}", 1234));
en fonction des paramètres régionaux par défaut peut produireNumber 1,234
au lieu deNumber 1234
.{0} it ll take firstname
, quand{1} then lastname
, comme si. Est-il possible comme{0,choice,0.getFirstName()}
ou quelque chose comme ça ?github
projet de il."there were 1 object"
Bien fait, un génie 🙂Prendre un coup d'oeil à Chaîne de caractères.format. Notez, cependant, qu'il faut les spécificateurs de format similaire à celles de C printf famille de fonctions, par exemple:
Serait de retour "Bonjour tout le monde, de 42". Vous pouvez trouver cette utile lors de l'apprentissage sur les spécificateurs de format. Andy Thomas-Cramer a eu la gentillesse de laisser cette lien dans un commentaire ci-dessous, qui semble pointer vers l'officiel de la spec. Les plus couramment utilisés sont:
C'est radicalement différent de C# qui utilise la position des références en option avec un spécificateur de format.
cela signifie Que vous ne pouvez pas faire des choses comme:...
sans répéter le paramètre passé à printf/format.(voir La Mêlée de Meister commentaire ci-dessous)Si vous voulez juste pour imprimer le résultat directement, vous pouvez trouver le Système.out.printf (PrintStream.printf) à votre goût.
String.format
pouvez également prendre numériques positions:String.format("%2$s %1$s", "foo", "bar");
sortiebar foo
J'ai écrit ma méthode simple pour elle :
de sorte que vous pouvez l'utiliser comme:
Solution Java
Le "-" est utilisé pour les retraits à gauche
Le "15" rend la Chaîne de caractères de longueur minimale, il faut jusqu'à 15
Si vous choisissez de ne pas utiliser des chaînes de caractères.format, l'autre option est le + opérateur binaire
C'est l'équivalent de
new StringBuilder("Step ").append(String.valueOf(1)).append(" of ").append(String.valueOf(2));
Selon ce que vous utilisez est votre choix. StringBuilder est plus rapide, mais la différence de vitesse est marginal. Je préfère utiliser le
+
opérateur (ce qui fait unStringBuilder.append(String.valueOf(X)))
et de trouver plus facile à lire.+
opérateur fonctionne. 2) Votre explication n'est pas encore précis.+
est équivalent à l'utilisation deStringBuilder
, pasString.concat
. (trop d'info sur ce.)Cette solution a fonctionné pour moi. J'avais besoin de créer des url pour un REPOS client de manière dynamique et j'ai donc créé cette méthode, vous avez juste à passer le restURL comme ce
et ajouter autant de paramètres que vous avez besoin:
Vous avez juste à appeler cette méthode comme ceci:
La sortie