《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 toutiao.com/i6713087515768652301 「牛旦教育」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

1. 摘要

在本文中,我们将介绍些方法检查Java中的空字符串(空的或空白符串)。我们有些语言的原生方法以及几个库可用。

2. 空与空白(Empty&Blank)

对于知道字符串是否为空是很常见的问题。这里定义空字符串:是指空的或是零长度的字符串。如果一个字符串只有空白字符,我们也称之为空字符串。

对于Java而言,空白字符串如空格、制表符等。具体详情可以参考Java API(Character.isWhitespace:\ https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html#isWhitespace-char-)。

3.空字符串

3.1. Java 6及以上版本

如果使用JDK在Java 6及以上,那么检查字符串的最简单方法是就是子字符串的isEmpty

boolean isEmptyString(String string) {
return string == null || string.isEmpty();
}

如上为了确保null安全,我们在写判空函数时,添加了额外的null检查。

3.2. Java 5及以下版本

字符串的isEmpty方法是随Java 6引入的。对于Java 5及更低版本,我们可以使用字符串的length进行判断,自己写判空方法时,这样操作:

boolean isEmptyString(String string) {
return string == null || string.length() == 0;
}

从上代码可知,实际上,isEmpty\ 只是length的快捷方式。

4. 空白字符串

字符串的isEmptylength 可用于检查是否为空字符串。如果我们想想检查是否为空白字符串,可以使用字符串的trim方法达到目的。trim方法在执行判空前,会删除开头结尾的空白(空格)字符,我们可以这样来写空白字符串判定方法:

boolean isBlankString(String string) {
return string == null || string.trim().isEmpty();
}

确切地说,trim将删除Unicode代码小于或等于U+0020(「链接」)的所有前导和尾随字符。

我们知道String是不可变的,因此调用 trim 实际上不会改变底层字符串的。

5. Bean验证

检查字符串的另一种方法是用正则表达式。这对于Java Bean验证来说非常方便:

@Pattern(regexp = "\\A(?!\\s*\\Z).+")
String someString;

给定的正则表达式会确保空字符串或空白符串无效。

6. 使用Apache Common

如果可以添加依赖项,我们可以使用 Apache Commons Lang(Lang – Home)。这是个很有用的Java工具。

如果我们使用Maven,我们需要添加的公地lang3依赖 于我们的POM:

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>

除此之外,这个工具类库还提供了StringUtils 类,这个类带有像isEmpty,isBlank等方法:

StringUtils.isBlank(string)

此调用与我们自己的isBlankString方法相同。它是null安全的并且还检查空格。

7. 使用Guava

另一很知名的类库是google的Guava所包含的字符串工具类。从版本23.1开始,有两种Guava:androidjre。Android风格针对Android和Java 7,而JRE风格适用于Java 8。

如果我们不针对Android目标,我们可以将JRE风格的Guava添加到我们的pom中:

<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.0-jre</version>
</dependency>

Guava的 Strings类附带了一个方法Strings.isNullOrEmpty:

Strings.isNullOrEmpty(string)

它检查给定字符串是null还是空的,但不检查全空白字符串

8. 总结

以上为几种方法来检查字符串是否为空。通常想检查字符串是否为空白的,这意味着它只包含空格字符。

最方便的方法是使用Apache Commons Lang,它提供诸如StringUtils.isBlank之类的帮助类。如果要坚持使用普通Java,我们可以将字符串原生的trimisEmptylength组合使用。对于Bean验证,可以使用正则表达式。

好了。比较基础的内容,就写到这里了 ,分享出去吧。

文章目录
  1. 1. 1. 摘要
  2. 2. 2. 空与空白(Empty&Blank)
  3. 3. 3.空字符串
    1. 3.1. 3.1. Java 6及以上版本
    2. 3.2. 3.2. Java 5及以下版本
  4. 4. 4. 空白字符串
  5. 5. 5. Bean验证
  6. 6. 6. 使用Apache Common
  7. 7. 7. 使用Guava
  8. 8. 8. 总结