前言
由于很多时候页面输入框传输的数据带空格,以及导入功能时,excel表格中会包含空格,以至于造成后台数据的不一致,以下是一个只需一行代码直接去除空格以及换行符的工具类。
一、导入依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>5.8.24</version>
</dependency>
二、去除空格工具类
import cn.hutool.core.util.ReflectUtil;
import org.apache.commons.lang3.StringUtils;
import java.lang.reflect.Field;
/**
* 去除对象属性数据中空格及换行
*/
public class TrimBeanUtil {
private static final String STRING_TYPE_NAME = "java.lang.String";
/**
* 去除实体中属性值空格及换行
* @param object 实体属性
*/
public static void trimData(Object object) {
// 获取实体中所有属性字段
Field[] fields = ReflectUtil.getFields(object.getClass());
for (Field field : fields) {
// 获取属性字段类型
String canonicalName = field.getType().getCanonicalName();
// 如果字段是String类型,则去除此字段数据的空格
if (STRING_TYPE_NAME.equals(canonicalName)) {
// 获取字段值
String fieldValue = (String) ReflectUtil.getFieldValue(object, field);
if (StringUtils.isNotBlank(fieldValue)) {
// 去掉换行
String fieldValueStr = fieldValue.replaceAll("\r|\n", "");
// 将去除空格后的数据 替换 原数据
ReflectUtil.setFieldValue(object, field, fieldValueStr.trim());
}
}
}
}
}
三、测试
public class Test {
public static void main(String[] args) {
Admin admin = new Admin();
admin.setUsername(" jason ");
admin.setPassword(" 123 ");
admin.setPhone("123456789 ");
System.out.println("去空格前 = " + admin);
// 一行代码解决对象属性带空格的问题
TrimBeanUtil.trimData(admin);
System.out.println("去空格后 = " + admin);
}
}
四、运行结果
去空格前 = Admin(id=0, username= jason , password= 123 , phone=123456789 )
去空格后 = Admin(id=0, username=jason, password=123, phone=123456789)