88 votes

Formater un message à l'aide de MessageFormat.format() en Java

J'ai stocké quelques messages dans un paquet de ressources. J'essaie de formater ces messages comme suit.

import java.text.MessageFormat;

String text = MessageFormat.format("You're about to delete {0} rows.", 5);
System.out.println(text);

Supposons que le premier paramètre, c'est-à-dire le message réel, soit stocké dans un fichier de propriétés qui est récupéré d'une manière ou d'une autre.

Le deuxième paramètre, c'est-à-dire 5, est une valeur dynamique et doit être placé dans l'espace réservé. {0} ce qui n'est pas le cas. La ligne suivante s'imprime,

Vous êtes sur le point de supprimer {0} lignes.

Le caractère de remplacement n'est pas remplacé par le paramètre réel.


C'est l'apostrophe ici - You're . J'ai essayé d'y échapper comme d'habitude, comme You\\'re mais ça n'a pas marché. Quels sont les changements nécessaires pour que cela fonctionne ?

0voto

Viktor Wellboy Points 11

Voici une méthode qui ne nécessite pas de modifier le code et qui fonctionne quel que soit le nombre de caractères.

String text = 
  java.text.MessageFormat.format(
    "You're about to delete {0} rows.".replaceAll("'", "''"), 5);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X