Java模板参数替换(类SPEL)
Java动态参数处理,类似SPEL,替换${变量名}为对应的变量值。
public class DynamicParamUtils {
private static final String DYNAMIC_PARAM_PREFIX = "${";
private static final String DYNAMIC_PARAM_SUFFIX = "}";
// 当data不是k-v形式对象时,写入第一个变量
public static String processDynamicParamWithSingleParam(String content, Object data) {
int begin = content.indexOf(DYNAMIC_PARAM_PREFIX);
int end = content.indexOf(DYNAMIC_PARAM_SUFFIX);
if (begin == -1 || end == -1 || begin > end) {
return content;
}
String substring = content.substring(begin, end + 1);
return content.replace(substring, data.toString());
}
// 多变量,data 为 key - value 形式
public static String processDynamicParams(String content, Object data) {
int begin = content.indexOf(DYNAMIC_PARAM_PREFIX);
int end = content.indexOf(DYNAMIC_PARAM_SUFFIX);
if (begin == -1 || end == -1 || begin > end) {
return content;
}
String startContent = content.substring(0, begin);
String substring = content.substring(begin, end + 1);
if (StringUtils.isNotEmpty(substring)) {
String key = substring.replace("${", "").replace("}", "");
JSONObject jsonObject = JSONObject.fromObject(data);
Object value = jsonObject.get(key);
if (value != null) {
startContent = startContent + value.toString();
} else {
startContent += substring;
}
}
int length = content.length();
if ( length == end + 1) {
return startContent;
} else {
return startContent + processDynamicParams(content.substring(end + 1, length), data);
}
}
}