专栏首页用户5521492的专栏Java 中检查空字符串(null或空白)的方法有几种?

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

作者:牛旦教育IT课堂

来源:https://www.toutiao.com/i6713087515768652301

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、空字符串

Java 6及以上版本

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

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

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

Java 5及以下版本

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

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

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

4、空白字符串

字符串的isEmpty 和length 可用于检查是否为空字符串。如果我们想想检查是否为空白字符串,可以使用字符串的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:android 和jre。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,我们可以将字符串原生的trim与isEmpty或length组合使用。对于Bean验证,可以使用正则表达式。

推荐阅读:

1、java | 什么是动态代理

2、Spring 复盘(一) | IOC

3、Spring 复盘(二) | AOP

4、SpringBoot | 启动原理

5、SpringBoot | 自动配置原理

6、Spring MVC 复盘 | 工作原理及配置详解

本文分享自微信公众号 - 一个优秀的废人(feiren_java),作者:一个优秀的废人

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 字符串拼接,什么时候会走 StringBuilder?

    这时候,疑问就来了,为什么结果会不一致呢?利用在cmd窗口输入javap -c TestDemo.class命令,对字节码文件进行反编译,发现了问题所在?

    一个优秀的废人
  • 推荐两个关于 Java 面试的 Github 项目

    哈喽,大家好。相信大家都知道金九银十,在人才市场上是指每年的 9 月和 10 月是企业的招聘高峰期。这个时候企业往往有大量招聘需求,求职者在这个时候就找工作无疑...

    一个优秀的废人
  • 白话详解 TCP 的三次握手到底做了些什么!

    第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

    一个优秀的废人
  • 【GPLT】L1-011 A-B

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    喜欢ctrl的cxk
  • 算法03:字符串包含

    给定两个分别由字母组成的字符串A和字符串B,字符串B的长度比字符串A短。请问,如何最快地判断字符串B中所有字母是否都在字符串A里?

    mojocn
  • python 5.1单一函数针对列表、数组、字符串

    列表方法 ls.append(object) #向列表中插入元素,但每次只能插入一个 ls.count(value) #统计列表中某元素的个数 ls.exten...

    学到老
  • YAML 语言入门教程 转

    YAML 仍然是一门标记性语言,但为了强调这门语言以数据为中心,而不是以标记语言为中心。采用反向缩略语重新命名。

    wuweixiang
  • 第八节、Python中raw字符串与多行字符串《Python学习》

    如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀r ,表示这是一个 raw 字符串,里面的字...

    申霖
  • 【ES6基础】模板字符串(Template String)

    模板字符串是ES6中非常重要的一个新特性,这个特性使得我们处理相关业务变得更加容易。比如在处理嵌入表达式、多行字符串、字符串中插入变量、字符串格式化等方面的应用...

    前端达人
  • Vue学习笔记之Vue的模板字符串

    模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量

    Jetpropelledsnake21

扫码关注云+社区

领取腾讯云代金券