Java中如何替换用作邮件内容的HTML字符串常量中的占位符?
解决方案
直接使用JDK自带的String.format()静态方法即可完成占位符替换,该方法天生支持%s(字符串占位符)、%d(整数占位符)的匹配规则,你只需要按照模板中占位符的先后顺序传入对应参数即可。
修改后的代码示例
你只需要调整类A中test()方法的逻辑,对B.DESCRIPTION做格式化处理后再使用:
public class A { String food = "briyani"; int age = 18; String name; String description; A(String name,String description){ this.name=name; this.description =description; } public A() {} public static void main(String[] args) { A a = new A(); a.test(); } private void test() { // 按占位符顺序传参:第一个%s对应food,第二个%d对应age String processedDescription = String.format(B.DESCRIPTION, food, age); A a = new A("yogesh", processedDescription); // 输出可验证替换后的完整HTML内容 System.out.println(processedDescription); } } public class B { public static String DESCRIPTION = "<!DOCTYPE html><html>" + "<br>My name is yogesh. My fav food is %s. And my age is %d "+ "</html>"; }
注意事项
- 占位符和传入参数的顺序、类型必须严格对应:如果
%d位置传入字符串、或者参数数量少于占位符数量,都会抛出格式转换异常 - 如果后续模板需要支持更复杂的动态内容规则,也可以选择
MessageFormat类(占位符为{0}、{1}这类索引形式),当前场景下String.format是成本最低的实现 - 替换完成的HTML作为邮件内容发送时,需要将邮件的内容类型设置为
text/html,否则会被邮箱当成纯文本展示标签代码
内容的提问来源于stack exchange,提问作者yogesh
相关产品推荐
相关产品推荐

