源码分析八(org.springframework.util包之StringUtils类))

本文详细介绍了Spring框架中util包的StringUtils类的各种方法,包括字符串的判断、去除空白字符、忽略大小写的开始与结束判断等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:spring框架util包中的StringUtils类主要是处理关于字符串

的功能方法,下面直接结合代码分析:

//判断字符串是否为空,如果为nul或者""则返回true,否则返回false
public static boolean isEmpty(Object str)
    {
        return str == null || "".equals(str);
    }

  

//判断字符串是否有长度,不等于null同时长度大于0,则为true
//这里重载两个hasLength方法,其中CharSequence是String的父类,是接口
public static boolean hasLength(CharSequence str)
    {
        return str != null && str.length() > 0;
    }

    public static boolean hasLength(String str)
    {
        return hasLength(((CharSequence) (str)));
    }

  

//如果为空则直接返回false,如果字符串中有一个不是空白,则表示
//有内容,返回true 
public static boolean hasText(CharSequence str)
    {
        if(!hasLength(str))
            return false;
        int strLen = str.length();
        //遍历字符序列,如果其中有一个不是空白,则返回true
        for(int i = 0; i < strLen; i++)
            if(!Character.isWhitespace(str.charAt(i)))
                return true;

        return false;
    }

    public static boolean hasText(String str)
    {
        return hasText(((CharSequence) (str)));
    }

  

//判断字符串是否包含空白,如果为空则直接返回false,,遍历字符序列,如果其中
//有一个字符是空白,则返回true,如果都不是,返回false
public static boolean containsWhitespace(CharSequence str)
    {
        if(!hasLength(str))
            return false;
        int strLen = str.length();
        for(int i = 0; i < strLen; i++)
            if(Character.isWhitespace(str.charAt(i)))
                return true;

        return false;
    }

    public static boolean containsWhitespace(String str)
    {
        return containsWhitespace(((CharSequence) (str)));
    }

  

//去除字符串前后的空白
public static String trimWhitespace(String str)
    {
        if(!hasLength(str))
            return str;
        StringBuilder sb;
        //去除字符串前导空白
        for(sb = new StringBuilder(str); sb.length() > 0 && Character.isWhitespace(sb.charAt(0)); sb.deleteCharAt(0));
        //去除字符串后导空白
        for(; sb.length() > 0 && Character.isWhitespace(sb.charAt(sb.length() - 1)); sb.deleteCharAt(sb.length() - 1));
        return sb.toString();
    }

  

//去除字符串所有空白
public static String trimAllWhitespace(String str)
    {
        if(!hasLength(str))
            return str;
        StringBuilder sb = new StringBuilder(str);
        //从第一个字符开始判断,是否为空白,如果是则删除,如果不是则index加1
        //判断第二个,然后一直到sb.length=index,则跳出循环
        for(int index = 0; sb.length() > index;)
            if(Character.isWhitespace(sb.charAt(index)))
                sb.deleteCharAt(index);
            else
                index++;

        return sb.toString();
    }

  

//去除前导空白,只取空白的前一部分 
public static String trimLeadingWhitespace(String str)
    {
        if(!hasLength(str))
            return str;
        StringBuilder sb;
        //去除前导空白
        for(sb = new StringBuilder(str); sb.length() > 0 && Character.isWhitespace(sb.charAt(0)); sb.deleteCharAt(0));
        return sb.toString();
    }

  

//去除后导空白,取去除空白后一部分 
public static String trimTrailingWhitespace(String str)
    {
        if(!hasLength(str))
            return str;
        StringBuilder sb;
        //去除后导空白
        for(sb = new StringBuilder(str); sb.length() > 0 && Character.isWhitespace(sb.charAt(sb.length() - 1)); sb.deleteCharAt(sb.length() - 1));
        return sb.toString();
    }

  

//删除前导为leadingCharacter的字符
 public static String trimLeadingCharacter(String str, char leadingCharacter)
    {
        if(!hasLength(str))
            return str;
        StringBuilder sb;
        //只要前导是指定字符则删除
        for(sb = new StringBuilder(str); sb.length() > 0 && sb.charAt(0) == leadingCharacter; sb.deleteCharAt(0));
        return sb.toString();
    }

  

//删除后导字符trailingCharacter
 public static String trimTrailingCharacter(String str, char trailingCharacter)
    {
        if(!hasLength(str))
            return str;
        StringBuilder sb;
        //只要后导是指定字符则删除
        for(sb = new StringBuilder(str); sb.length() > 0 && sb.charAt(sb.length() - 1) == trailingCharacter; sb.deleteCharAt(sb.length() - 1));
        return sb.toString();
    }

  

//忽略大小写,判断字符串是否已prefix开始 
public static boolean startsWithIgnoreCase(String str, String prefix)
    { 
        //如果源字符串str或者前缀字符串prefix为null,则返回false
        if(str == null || prefix == null)
            return false;
        //如果str以prefix开始,return true
        if(str.startsWith(prefix))
            return true;
       //如果源字符串的长度小于prefix的长度,返回false
        if(str.length() < prefix.length())
        {
            return false;
        } else
        {
            将源字符串prefix长度转换为小写,前缀字符串也转换为小写,比较是否相等
            String lcStr = str.substring(0, prefix.length()).toLowerCase();
            String lcPrefix = prefix.toLowerCase();
            return lcStr.equals(lcPrefix);
        }
    }

  

//忽略大小写,判断源字符串str是否以suffix结尾,处理逻辑类似上一个方法 
public static boolean endsWithIgnoreCase(String str, String suffix)
    {
        if(str == null || suffix == null)
            return false;
        if(str.endsWith(suffix))
            return true;
        if(str.length() < suffix.length())
        {
            return false;
        } else
        {
            String lcStr = str.substring(str.length() - suffix.length()).toLowerCase();
            String lcSuffix = suffix.toLowerCase();
            return lcStr.equals(lcSuffix);
        }
    }

  

 

转载于:https://www.cnblogs.com/warrior4236/p/6659807.html

<think>好的,我现在需要解决用户提到的无法访问Spring框架中的StringUtils的问题。用户遇到了org.springframework.util.StringUtils找不到或无法访问的情况,我应该怎么分析这个问题呢? 首先,用户的项目可能是一个Spring项目,但无法找到这个,常见的原因可能括依赖配置不正确、IDE配置问题或者版本冲突。我需要回忆一下常见的解决方法。 根据用户提供的引用内容,特别是引用[1]、[3]、[4],StringUtils属于org.springframework.util,所以首先需要确保项目正确引入了Spring框架的相关依赖。如果用户使用的是Maven,可能需要检查pom.xml文件中的依赖项是否正确添加了spring-core模块,因为StringUtils通常在这个模块中。 接下来,用户提供的引用[2]和[3]提到了使用StringUtils进行字符串处理,但问题出现在Spring Cloud Gateway中返回null的情况,这可能与依赖版本不兼容有关。不过用户当前的问题是无法访问本身,所以可能不是版本问题,而是缺少依赖。 可能的解决步骤: 1. 检查项目的构建文件(如pom.xml或build.gradle)是否含Spring Core依赖。 2. 确认依赖的版本是否正确,并且与项目中的其他Spring组件兼容。 3. 清理并重新构建项目,确保依赖已正确下载。 4. 检查IDE中的项目配置,确保依赖库已正确导入,没有报错。 5. 如果使用模块化项目(如Java 9+的module-info.java),检查是否有模块导出或所需的语句。 用户提供的引用[4]中的示例代码展示了如何使用StringUtils的hasLength方法,这说明用户可能正在尝试使用该的方法,但编译或运行时找不到,所以需要确保依赖存在。 另外,用户可能混淆了不同的StringUtils,比如Apache Commons Lang的StringUtils,但根据引用[3],用户已经注意到两者的区别,但问题可能在于没有正确导入Spring的版本。 总结步骤: - 添加正确的Spring Core依赖。 - 检查依赖管理,避免版本冲突。 - 重新导入项目,确保依赖被正确加载。 - 检查路径和导入语句是否有误。 现在需要将这些步骤以清晰的方式呈现给用户,同时生成相关问题。</think>### 解决无法访问`org.springframework.util.StringUtils`的方法 #### 1. 添加Spring Core依赖 **问题根源**:缺少Spring框架核心库依赖。`StringUtils`位于`spring-core`模块中,需在构建配置文件中显式引入。 **Maven项目**:在`pom.xml`中添加依赖: ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.3.20</version> <!-- 根据项目需求选择版本 --> </dependency> ``` **Gradle项目**:在`build.gradle`中添加: ```groovy implementation 'org.springframework:spring-core:5.3.20' ``` #### 2. 验证依赖版本兼容性 若项目中已含其他Spring组件(如Spring Boot、Spring Cloud),需确保`spring-core`版本与其他组件兼容。例如: - Spring Boot 2.7.x对应Spring Framework 5.3.x[^1] - Spring Cloud 2021.x建议搭配Spring Boot 2.6.x及以上 #### 3. 清理并重新构建项目 执行以下命令强制更新依赖: ```bash # Maven mvn clean install -U # Gradle gradle clean build --refresh-dependencies ``` #### 4. 检查IDE配置 - **刷新项目**:在IDE(如IntelliJ/Eclipse)中右键项目 > **Reload Project** 或 **Maven > Update Project** - **查看依赖树**:通过`mvn dependency:tree`或Gradle的依赖报告检查`spring-core`是否被正确引入且未被覆盖。 #### 5. 检查模块化配置(Java 9+) 若项目使用模块系统,在`module-info.java`中添加: ```java requires org.springframework.core; ``` #### 6. 确认导入语句 确保代码中导入的是Spring的`StringUtils`,而非其他同名: ```java import org.springframework.util.StringUtils; // 正确导入 // 避免错误导入Apache Commons的: // import org.apache.commons.lang3.StringUtils; ``` --- ### 常见错误场景 - **场景1**:依赖冲突导致`spring-core`未加载 **解决**:通过`mvn dependency:tree | findstr "spring-core"`检查是否存在多个版本,使用`<exclusion>`排除冲突版本。 - **场景2**:IDE缓存导致依赖未生效 **解决**:关闭IDE,删除项目目录下的`.idea`(IntelliJ)或`.settings`(Eclipse)文件夹,重新导入项目。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值