package com.yami.trading.common.util;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
/**
|
* 字符串转义工具类
|
*/
|
public class StringEscapeUtil {
|
|
/**
|
* 将字符串中的 & 转义为 &
|
* @param str 原始字符串
|
* @return 转义后的字符串(null/空字符串直接返回)
|
*/
|
public static String escapeAmpersand(String str) {
|
if (StringUtils.isBlank(str)) {
|
return str;
|
}
|
return str.replace("&", "&");
|
}
|
|
public static String unEscapeAmpersand(String str) {
|
if (StringUtils.isBlank(str)) {
|
return str;
|
}
|
return str.replace("&", "&");
|
}
|
|
/**
|
* 递归处理实体中所有字符串类型字段的 & 转义
|
* @param obj 要处理的实体对象
|
*/
|
public static void escapeEntityAmpersand(Object obj) {
|
if (obj == null) {
|
return;
|
}
|
|
// 获取实体所有字段
|
java.lang.reflect.Field[] fields = obj.getClass().getDeclaredFields();
|
for (java.lang.reflect.Field field : fields) {
|
try {
|
// 设置可访问私有字段
|
field.setAccessible(true);
|
Object value = field.get(obj);
|
|
// 只处理字符串类型字段
|
if (value instanceof String) {
|
String escapedValue = escapeAmpersand((String) value);
|
field.set(obj, escapedValue);
|
}
|
} catch (IllegalAccessException e) {
|
// 捕获字段访问异常,不中断流程
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|