如何使用 java 中的 MessageFormat 格式化邮件内容

How can i format the content of the mail by using MessageFormat in java

我有一份自动邮件内容要在 java 中发送。我想使用 MessageFormat 将其格式化为 java。

邮件内容如下,包含三个自定义参数。

Bonjour,

Nous vous confirmons la reception du {0}$ correspondant à l'achat de votre
{1} correspondant au forunisseur {3}

Si cela vous convient, nous vous enverrons la facture detaille avec toute les justificatifs
et le detail des commandes

Nous restons à votre entière disposition pour toute informations complementaires

A très bientôt.

Ceci est un message automatique , merci de ne pas repondre à ce mail.

这些参数将在数组中检索,并将插入到邮件的内容中

String[] data = new String[] {"15","p1","Tera"};
String montant = data[0];
String produit = data[1];
String fournisseur = data[2];
String message = "Bonjour, ..."; //The content of the mail above
MessageFormat mf = new MessageFormat(message);
System.out.println(mf);

我想在邮件内容中显示消息以及如何传递我的三个字符串变量而不是 {0}、{1} 和 {2}。我如何在 java 中执行此操作?

你可以这样做:

String message = "Bonjour, ..."
MessageFormat mf = new MessageFormat(message); 
String formattedStr = mf.format(new Object[]{"15", "p1", "Tera"});

注意 - 单引号 ' 应该通过加倍单引号来转义:''.

未转义的引用:

String msg = "Bonjour,\n" +
        "{0}$ correspondant à l'achat de votre {1} correspondant au forunisseur {2}\n";
MessageFormat mf = new MessageFormat(msg);
String formattedStr = mf.format(new Object[]{"15", "p1", "Tera"});
System.out.println(formattedStr);

输出不正确:

Bonjour,
15$ correspondant à lachat de votre {1} correspondant au forunisseur {2}

不是我们想要的...

要修复它,我们应该转义引号 l'achat --> l''achat:

String msg = "Bonjour,\n" +
        "{0}$ correspondant à l''achat de votre {1} correspondant au forunisseur {2}\n";
MessageFormat mf = new MessageFormat(msg);
String formattedStr = mf.format(new Object[]{"15", "p1", "Tera"});
System.out.println(formattedStr);

正确输出:

Bonjour,
15$ correspondant à l'achat de votre p1 correspondant au forunisseur Tera