Java运行时跨类替换字符串占位符及HTML邮件参数填充方法
问题1:第一种类B下划线占位符的跨类替换方案
第一种类B的静态字符串使用固定的______作为占位符,可直接通过String类的替换方法实现填充,由于B.DESCRIPTION是public static修饰的公共静态属性,跨类可直接访问。
修改后A类的test()方法示例:
private void test() { String template = B.DESCRIPTION; // 按顺序替换两个下划线占位符,分别填入当前A实例的food、age属性 String filledContent = template.replaceFirst("______", this.food) .replaceFirst("______", String.valueOf(this.age)); A a = new A("yogesh", filledContent); System.out.println(filledContent); }
如果要避免多次调用替换方法,也可以先将B类的占位符替换为标准格式化占位符再一次性填充,操作逻辑一致。
问题2:第二种类B格式化占位符的填充方案
第二种类B的HTML模板使用Java标准格式化占位符,%s对应字符串类型参数,%d对应整数类型参数,直接调用String.format()方法按占位符顺序传入参数即可,填充后的字符串可直接作为邮件HTML内容使用。
修改后A类的test()方法示例:
private void test() { // 参数顺序需和占位符顺序一一对应:第一个%s匹配food,第二个%d匹配age String htmlMailContent = String.format(B.DESCRIPTION, this.food, this.age); A a = new A("yogesh", htmlMailContent); System.out.println(htmlMailContent); }
如果模板中存在用户输入的动态内容,建议额外对特殊字符(<、>、&等)做HTML转义处理,避免出现注入风险。
内容的提问来源于stack exchange,提问作者yogesh
相关产品推荐
相关产品推荐

