java.lang.Character.isWhitespace()

本文介绍了一种在Java中判断字符串是否仅包含空白字符的方法。通过两个静态方法实现:isNotBlank用于判断字符串是否非空且不全是空白字符;containsOnlyWhitespaces用于检查字符串是否全由空白字符组成。这些方法有助于在进行字符串处理时更准确地识别空白。

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

传入字符(而不是字符串),判断字符是否为java指定的空白符
指定空白符,可以理解为加入白名单的空白吧,包含空格,制表符,tab垂直分隔等等。

要判断一个字符串是不是包含空格关检查 ' ' 不够
package jodd.util

public static boolean isNotBlank(String string) {
        return string != null && !containsOnlyWhitespaces(string);
    }
    public static boolean containsOnlyWhitespaces(CharSequence string) {
        int size = string.length();

        for(int i = 0; i < size; ++i) {
            char c = string.charAt(i);
            if(!CharUtil.isWhitespace(c)) {
                return false;
            }
        }

        return true;
    }

参考博客

<think>我们正在讨论Java中的StringUtils.hasText方法,根据用户提供的引用[1]中的示例代码和测试结果,我们可以总结出该方法的作用。 引用[1]中展示了四个测试用例: flag1 = StringUtils.hasText("") -> false flag2 = StringUtils.hasText(null) -> false flag3 = StringUtils.hasText(" ") -> false flag4 = StringUtils.hasText("xiaomaomao") -> true 因此,我们可以推断:StringUtils.hasText方法用于检查给定的字符串是否包含实际的文本内容。具体来说,它会在以下情况下返回false: - 字符串为null - 字符串为空字符串("") - 字符串仅包含空白字符(空格、制表符、换行符等) 只有当字符串至少包含一个非空白字符时,才返回true。 使用说明: - 该方法来自Spring框架的org.springframework.util.StringUtils类(注意:不是Apache Commons Lang中的StringUtils)。 - 方法签名:public static boolean hasText(@Nullable String str) - 参数:str 是要检查的字符串,可以为null。 - 返回值:如果字符串不为null,且长度大于0且包含至少一个非空白字符,则返回true;否则返回false。 内部实现逻辑(根据Spring源码)大致如下: 1. 如果字符串为null,返回false。 2. 检查字符串长度是否为0(空字符串),如果是则返回false。 3. 遍历字符串中的每个字符,如果发现至少一个非空白字符,则返回true;否则(即全是空白字符)返回false。 注意:在Java中,空白字符由Character.isWhitespace(char)方法定义,包括空格、制表符、换行符等。 示例代码: import org.springframework.util.StringUtils; public class HasTextExample { public static void main(String[] args) { System.out.println(StringUtils.hasText(null)); // false System.out.println(StringUtils.hasText("")); // false System.out.println(StringUtils.hasText(" ")); // false System.out.println(StringUtils.hasText("Hello")); // true System.out.println(StringUtils.hasText(" Hello ")); // true (因为中间有非空白字符) } } 与类似方法的区别: - StringUtils.hasText 与 StringUtils.hasLength 不同:hasLength只检查字符串是否为null或空字符串(即长度大于0),但不检查空白字符。因此,对于空白字符串,hasLength返回true,而hasText返回false。 - 与Apache Commons Lang中的StringUtils.isNotBlank方法类似,功能相同。 因此,在Spring项目中,推荐使用StringUtils.hasText来检查字符串是否包含非空白文本。</think>### Java `StringUtils.hasText()` 方法详解 #### 一、方法作用 `StringUtils.hasText()` 是 Spring Framework 提供的字符串工具方法,用于**检测字符串是否包含有效文本内容**。它的判断标准是: 1. ✅ 字符串不为 `null` 2. ✅ 字符串长度大于 0 3. ✅ 包含至少一个非空白字符(whitespace character) ```java import org.springframework.util.StringUtils; public class Example { public static void main(String[] args) { System.out.println(StringUtils.hasText(null)); // false System.out.println(StringUtils.hasText("")); // false System.out.println(StringUtils.hasText(" ")); // false System.out.println(StringUtils.hasText("Hello")); // true System.out.println(StringUtils.hasText(" Hi ")); // true } } ``` #### 二、核心逻辑解析 方法等价于以下代码实现: ```java public static boolean hasText(@Nullable String str) { return (str != null && !str.isEmpty() && containsText(str)); // 检查是否有非空白字符 } private static boolean containsText(CharSequence str) { for (int i = 0; i < str.length(); i++) { if (!Character.isWhitespace(str.charAt(i))) { return true; } } return false; } ``` #### 三、典型使用场景 1. **表单验证** 验证用户输入是否有效: ```java if (!StringUtils.hasText(user.getUsername())) { throw new IllegalArgumentException("用户名不能为空"); } ``` 2. **API 参数校验** 在控制器中验证请求参数: ```java @PostMapping("/create") public ResponseEntity<?> create(@RequestBody RequestDto request) { if (!StringUtils.hasText(request.getContent())) { return ResponseEntity.badRequest().body("内容不能为空"); } // 处理逻辑 } ``` 3. **配置项检查** 验证配置文件中的值: ```java @Value("${api.key}") private String apiKey; @PostConstruct public void init() { if (!StringUtils.hasText(apiKey)) { throw new IllegalStateException("API密钥未配置"); } } ``` #### 四、与其他方法的对比 | 方法 | `null` | 空字符串 | 空白字符串 | 有效文本 | |------|--------|----------|------------|----------| | `hasText()` | ❌ | ❌ | ❌ | ✅ | | `hasLength()` | ❌ | ❌ | ✅ | ✅ | | `String.isEmpty()` | NPE | ✅ | ✅ | ✅ | | `Objects.isNull()` | ✅ | ❌ | ❌ | ❌ | > 💡 **最佳实践**:在需要验证**真实内容**而非单纯长度时(如用户输入、API参数),优先使用 `hasText()` 而非 `hasLength()` 或 `isEmpty()`[^1]。 #### 五、注意事项 1. **空白字符定义**:包括空格、制表符(`\t`)、换行符(`\n`)等(通过 `Character.isWhitespace()` 判断) 2. **性能考虑**:方法会在发现第一个非空白字符时立即返回,效率较高 3. **空安全**:原生支持 `null` 值检查,避免 `NullPointerException` 4. **依赖**:位于 `org.springframework.util` 包,需引入 Spring 框架 > 此方法在 Spring Boot 2.0+ 中保持稳定,是处理字符串验证的首选工具方法之一[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值