解析模板内容“${}“的工具类

package com.ruoyi.voc.common.utils;

import com.ruoyi.voc.dto.VocAppealMasterAndMasterExtRelationDTO;

import java.lang.reflect.Field;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 解析模板工具类
 * @作者 xhc
 * @创建时间 2023/4/27 10:38
 */
public class ParseTemplateUtil {
    private static final Pattern PATTERN = Pattern.compile("\\$\\{(.+?)\\}");

    /**
     * 解析模板
     * @param input 输入的字符串
     * @param obj 对象
     * @return 结果
     */
    public static String parseTemplate(String input, Object obj) {
        Matcher matcher = PATTERN.matcher(input);
        StringBuffer sb = new StringBuffer();
        while (matcher.find()) {
            String field = matcher.group(1);
            String value = getValue(field, obj);
            matcher.appendReplacement(sb, value);
        }
        matcher.appendTail(sb);
        return sb.toString();
    }

    /**
     * 根据反射获取属性的Value值
     * @param field 属性
     * @param obj 对象
     * @return 结果
     */
    private static String getValue(String field, Object obj) {
        try {
            Field f = obj.getClass().getDeclaredField(field);
            f.setAccessible(true);
            Object value = f.get(obj);
            return value != null ? value.toString() : "";
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

    public static void main(String[] args) {
        VocAppealMasterAndMasterExtRelationDTO vocAppealMasterAndMasterExtRelationDTO = new VocAppealMasterAndMasterExtRelationDTO();
        vocAppealMasterAndMasterExtRelationDTO.setAppealNo("123154114124213");
        vocAppealMasterAndMasterExtRelationDTO.setStatusName("提报初审");
        System.out.println(parseTemplate("诉求编号为${appealNo}的诉求流转到${statusName},请尽快处理!!!", vocAppealMasterAndMasterExtRelationDTO));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值