【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提供四组判空方法,区分空白字符空字符串

  1. isEmpty():null / 长度 0 → true;全空格字符串→false
  2. isNotEmpty()isEmpty取反
  3. isBlank():null / 空串 / 全是空格制表符 → true(业务参数校验首选)
  4. 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判断代码。除了文中示例方法,还有indexOflastIndexOf等查找 API,用法逻辑一致。后续我会继续更新 Java IO 流、MySQL 实操相关博文,感兴趣可以持续关注我的博客。

Tags:

发表回复

Your email address will not be published. Required fields are marked *.

*
*