跳至主要內容

07. Java检查空字符串

LiuSongLing大约 3 分钟javajavastring

在本文章中,学习在Java中检查空或空字符串的一些方法。

空定义

首先确保我们对空字符串的定义意见一致。

  • 空的(empty):字符串是空的(null)或没有任何长度的字符串
  • 空白(blank):字符串仅由空格组成

让我们看看四种不同的空字符串:

String emptyNull = null;                    // empty
String emptyNewStringTwo = new String();    // empty

String emptyLiteral = "";                   // blank
String emptyNewString = new String("");     // blank

Empty字符串校验

Java 6及更高版本

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

Java 5及以下版本

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

Blank字符串校验

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

trim 方法将删除所有Unicode代码小于或等于U+0020的前导和尾随字符。字符串是不可变的,所以 trim 修剪实际上不会改变原始字符串。

JDK 11及以上提供了 isBlank 方法更快的判断:

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

正则校验

正则验证 Blank,这需要在 Java Bean Validation中使用:

public class User {

  // other properties

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

该正则确保了 empty 或 blank 的空字符串将无法通过校验。

Apache Commons校验

借助 Apache Commons Lang 进行空字符串校验,首先引入 Apache Commons Lang:

在 pom.xml 中加入依赖

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

借助工具类的静态方法校验空字符串:

StringUtils.isBlank(string);
StringUtils.isEmpty(string);

Google Guava校验

借助 Google guava 进行空字符串校验,首先引入 Google guava:

在 pom.xml 中加入依赖

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

借助工具类的静态方法校验空字符串:

Strings.isNullOrEmpty(string)

它检查给定的字符串是 null 还是 empty,但不会检查仅为空格的字符串。

Spring校验

Spring Core库提供了一个名为StringUtils的类,该类具有检查字符串是否为空的方法。

更高的版本Spring 5.3.0及以上被被ObjectUtils类代替。

在 pom.xml 中加入依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.3.0</version>
</dependency>

借助工具类的静态方法校验空字符串:

ObjectUtils.isEmpty(emptyString)

总结

有几种方法可以检查字符串是否为空。通常,我们还想检查字符串是否为空格组成。

最方便的方法是使用 Apache Commons Lang ,它提供了 StringUtils.isBlank 等便捷方法。

如果我们想坚持使用纯Java,我们可以将 String#trimString#isEmptyString#length 组合使用。

对于 Java Bean Validation,可以使用正则表达式。