web-dev-qa-db-fra.com

Java: mise en forme des chaînes avec des espaces réservés

Je suis nouveau sur Java et je suis de Python. Dans Python nous faisons le formatage de chaînes comme ceci:

>>> x = 4
>>> y = 5
>>> print("{0} + {1} = {2}".format(x, y, x + y))
4 + 5 = 9
>>> print("{} {}".format(x,y))
4 5

Comment répliquer la même chose en Java?

27
user1757703

La classe MessageFormat ressemble à ce que vous recherchez.

System.out.println(MessageFormat.format("{0} + {1} = {2}", x, y, x + y));
51
rgettman

Java a une méthode String.format qui fonctionne de la même manière. Voici un exemple de la façon de l'utiliser. Ceci est le référence de la documentation qui explique ce que tous ces % les options peuvent être.

Et voici un exemple en ligne:

package com.sandbox;

public class Sandbox {

    public static void main(String[] args) {
        System.out.println(String.format("It is %d oclock", 5));
    }        
}

Cela imprime "C'est 5 heures".

11
Daniel Kaplan

Vous pouvez le faire (en utilisant String.format) :

int x = 4;
int y = 5;

String res = String.format("%d + %d = %d", x, y, x+y);
System.out.println(res); // prints "4 + 5 = 9"

res = String.format("%d %d", x, y);
System.out.println(res); // prints "4 5"
2
jh314

Slf4j a MessageFormatter.format () qui accepte {} sans le numéro d'argument, tout comme Python. Slf4j est un framework de journalisation populaire, mais vous n'avez pas besoin de l'utiliser pour vous connecter pour utiliser MessageFormatter.

0
proski