Java 中检查空字符串(null 或空白)的方法有几种?

点击上方“Java基基”,选择“设为星标”

做积极的人,而不是积极废人!

源码精品专栏

 

来源:牛旦教育 toutiao.com/i6713087515768652301

  • 1. 摘要

  • 2. 空与空白(Empty&Blank)

  • 3.空字符串

    • 3.1. Java 6及以上版本

    • 3.2. Java 5及以下版本

  • 4. 空白字符串

  • 5. Bean验证

  • 6. 使用Apache Commons

  • 7. 使用Guava

  • 8. 总结


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 Commons

如果可以添加依赖项,我们可以使用 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验证,可以使用正则表达式。

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



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、Elasticsearch、分库分表、读写分离、SpringMVC、SpringWebflux、WebSocket、性能测试等等内容。

提供近 2W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

如果你喜欢这篇文章,喜欢,转发。

生活很美好,明天见(。・ω・。)ノ♡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值