【Java】常用工具类 ——StringUtils 全方位使用总结
大家好,我是云扬,日常开发中处理字符串是家常便饭,原生String自带的方法经常要做非空判断、空格处理、分隔拼接,大量冗余 if 代码很繁琐。Apache 提供的org.apache.commons.lang3.StringUtils工具类封装了高频字符串操作,大幅简化开发,今天整理一份日常最实用的用法,附带实操代码。
一、Maven 依赖引入
想要使用StringUtils,首先在pom.xml导入 commons-lang3 依赖:
<!-- commons-lang3工具包 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.14.0</version>
</dependency>
注:项目没有 Maven 管理的话,可手动导入对应 jar 包。
二、字符串空值判断(开发最高频)
原生str.isEmpty()无法识别全空格字符串、null 空指针,StringUtils提供四组判空方法,区分空白字符和空字符串:
isEmpty():null / 长度 0 → true;全空格字符串→falseisNotEmpty():isEmpty取反isBlank():null / 空串 / 全是空格制表符 → true(业务参数校验首选)isNotBlank():isBlank取反
import org.apache.commons.lang3.StringUtils;
public class StringTest {
public static void main(String[] args) {
String str1 = null;
String str2 = "";
String str3 = " ";
String str4 = "java开发";
System.out.println(StringUtils.isEmpty(str1)); // true
System.out.println(StringUtils.isEmpty(str2)); // true
System.out.println(StringUtils.isEmpty(str3)); // false
System.out.println(StringUtils.isBlank(str1)); // true
System.out.println(StringUtils.isBlank(str2)); // true
System.out.println(StringUtils.isBlank(str3)); // true
System.out.println(StringUtils.isNotBlank(str4));// true
}
}
业务小技巧:表单入参校验优先用
isNotBlank,避免用户输入全空格数据。
三、安全分隔字符串 split
原生String.split()遇到特殊分隔符、null 字符串极易空指针,StringUtils.split做了空安全处理:
public static void main(String[] args) {
String str = "java,mysql,linux";
String emptyStr = null;
// 按逗号分割
String[] arr = StringUtils.split(str, ",");
for (String s : arr) {
System.out.print(s + " "); // java mysql linux
}
// null入参不会报错,返回空数组
String[] arr2 = StringUtils.split(emptyStr, ",");
System.out.println(Arrays.toString(arr2)); // null
}
四、判断字符串是否纯数字 isNumeric
校验编号、手机号片段等数字场景,快速判断字符串是否全部由数字组成:
public static void main(String[] args) {
String num1 = "123456";
String num2 = "12a34";
String num3 = "-123";
System.out.println(StringUtils.isNumeric(num1));//true
System.out.println(StringUtils.isNumeric(num2));//false
System.out.println(StringUtils.isNumeric(num3));//false(负号不算数字)
}
五、集合 / 数组拼接字符串 join
日常导出、拼接 ID 逗号串,不用循环拼接,join一键搞定:
import java.util.ArrayList;
import java.util.List;
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("SpringBoot");
list.add("MyBatis");
list.add("Redis");
// 使用逗号拼接集合
String joinStr = StringUtils.join(list, ",");
System.out.println(joinStr); // SpringBoot,MyBatis,Redis
}
六、首尾去空格系列 trim 方法
| 方法 | 作用 |
|---|---|
| trim | 去首尾空格,null 返回 null |
| trimToEmpty | 去首尾空格,null 返回空字符串 “” |
| trimToNull | 去首尾空格,空串 / 全空格返回 null |
public static void main(String[] args) {
String str = " 云扬编程 ";
System.out.println(StringUtils.trim(str)); //云扬编程
System.out.println(StringUtils.trimToEmpty(null));//空字符串
System.out.println(StringUtils.trimToNull(" "));//null
}
七、字符串对比、首尾匹配、截取替换
1. 安全 equals(避免空指针)
// 不用先判null,直接对比
System.out.println(StringUtils.equals(null, null));//true
System.out.println(StringUtils.equals("Java", "java"));//false
System.out.println(StringUtils.equalsIgnoreCase("Java", "java"));//true
2. 首尾匹配、包含字符
String content = "StringUtils工具类";
System.out.println(StringUtils.startsWith(content, "String"));//true
System.out.println(StringUtils.endsWith(content, "工具类"));//true
System.out.println(StringUtils.contains(content, "工具"));//true
3. 字符串替换与截取
String source = "hello java";
//普通替换
String replace = StringUtils.replace(source, "java", "mysql");
System.out.println(replace); //hello mysql
//指定下标截取
String sub = StringUtils.substring(source, 0, 5);
System.out.println(sub);//hello
4. 首字母大小写转换
String word = "spring";
System.out.println(StringUtils.capitalize(word));//Spring
String word2 = "Mysql";
System.out.println(StringUtils.uncapitalize(word2));//mysql
八、总结
StringUtils是后端开发必备工具类,核心优势就是空安全,规避大量null判断代码。除了文中示例方法,还有indexOf、lastIndexOf等查找 API,用法逻辑一致。后续我会继续更新 Java IO 流、MySQL 实操相关博文,感兴趣可以持续关注我的博客。



