1. 简介

在本教程中,我们将讨论一些在 Java 中检查空字符串或空白字符串的方法。有一些母语方法,以及几个库。

2. 空与空白

当然,知道字符串何时为空或空白是很常见的,但让我们确保我们的定义在同一页面上。

如果字符串为null或没有任何长度的字符串,则我们认为它是的。如果一个字符串只包含空格,那么我们称之为空白

对于 Java,空格是字符,如空格、制表符等。我们可以查看Character.isWhitespace的例子。

3. 空字符串

3.1. 使用 Java 6 及更高版本

如果我们至少在Java 6上,那么检查字符串的最简单方法是String#isEmpty:

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

为了使它也为空安全,我们需要添加一个额外的检查:

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

3.2. 使用 Java 5 及更低版本

String#isEmpty是在 Java 6 中引入的。对于 Java 5 及更低版本,我们可以改用String#length

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

事实上,String#isEmpty只是String#length 的快捷方式。

4. 空白字符串

String#isEmptyString#length都可用于检查字符串。

如果我们还想检测空白字符串,我们可以借助String#trim 来实现这一点。它将在执行检查之前删除所有前导和尾随空格:

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

准确地说,String#trim将删除所有Unicode 代码小于或等于 U+0020 的前导和尾随字符。

另外,请记住,字符串是不可变的,因此调用trim实际上不会更改基础字符串

除了上述方法,从 Java 11 开始,我们还可以使用isBlank() 方法来代替修剪

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

isBlank()方法的效率也更高一些,因为它不会在堆上创建新的字符串。因此,如果我们使用的是 Java 11 或更高版本,这是首选方法。

5. Bean 验证

检查空白字符串的另一种方法是正则表达式。例如,这在Java Bean Validation中派上用场:

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

给定的正则表达式可确保空字符串或空白字符串不会验证。

6. 使用阿帕奇共享资源

如果可以添加依赖项,我们可以使用Apache Commons Lang。这有很多Java的帮助程序。

如果我们使用 Maven,我们需要将commons-lang3依赖项添加到我们的 pom 中:

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

除此之外,这给了我们StringUtils。

此类附带了isEmpty、isBlank 等方法:

StringUtils.isBlank(string)

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

7. 含番石榴

另一个带来某些字符串相关实用程序的著名库是谷歌的Guava。从23.1版本开始,Guava有两种版本:androidjre。Android风格针对Android和Java 7,而JRE风格针对Java 8。

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

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

Guavas String 类附带方法Strings.isNullOrEmpty:

Strings.isNullOrEmpty(string)

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

8. 结论

有几种方法可以检查字符串是否为空。通常,我们还想检查字符串是否为空,这意味着它仅由空格字符组成。

最方便的方法是使用 Apache Commons Lang,它提供了StringUtils.isBlank 等帮助程序。如果我们想坚持使用纯Java,我们可以将String#trim与String#isEmpty或String#length结合使用。对于 Bean 验证,可以改用正则表达式。

确保在GitHub上查看所有这些示例。

在 Java 中检查空字符串或空白字符串相关推荐

  1. Java解决空引用_在java中检查空引用的乐观方法

    本问题已经有最佳答案,请猛点这里访问. 任何Java精通/专家都能告诉我,在使用null来避免EDCOX1×0时,检查空引用或对象的乐观方式是什么? 在我的代码中,我有100多个字段,其中大部分是为了 ...

  2. hive 判断子字符串_Java中检查空字符串(null或空白)的方法有几种?

    说明: 本文为牛旦教育原创,头条首发,转发须注明来源和原文网址. 1.摘要 在本文中,我们将介绍些方法检查Java中的空字符串(空的或空白符串).我们有些语言的原生方法以及几个库可用. 2.空与空白( ...

  3. java 返回空数组_避免在Java中检查Null语句

    1.概述 通常,在Java代码中处理null变量.引用和集合很棘手.它们不仅难以识别,而且处理起来也很复杂.事实上,在编译时无法识别处理null的任何错误,会导致运行时NullPointerExcep ...

  4. java 删除二维数组中的null_避免在Java中检查Null语句

    1.概述 通常,在Java代码中处理null变量.引用和集合很棘手.它们不仅难以识别,而且处理起来也很复杂.事实上,在编译时无法识别处理null的任何错误,会导致运行时NullPointerExcep ...

  5. java反转函数_在JAVA中,下列哪个函数可用于字符串的反转?

    在JAVA中,下列哪个函数可用于字符串的反转? 更多相关问题 很多危机是无法准确预测的,必须为危机做好准备,包括().通信计划以及重要关系的建立等. (A) 危 幼儿园科技小制作可分为模型类.动力类. ...

  6. java 空文件夹删除_删除Java中的空文件夹,处理隐藏文件

    我想删除java中的空文件夹,这里是我的代码: try (DirectoryStream stream = Files.newDirectoryStream(path)) { for (Path fi ...

  7. Java中获得了方法名称的字符串,怎么样调用该方法

    问题: Java中获得了方法名称的字符串,怎么样调用该方法 如果我有以下两个变量 Object obj; String methodName = "getName"; 在不知道ob ...

  8. JAVA中如何将大数字或字符串放进数组

    JAVA中如何将大数字或字符串放进数组 在JAVA学习过程中字符串.数组.数字之间的 的转换经常用到,记录一些非常基础的转换. 1.将数字转换为字符串:String str = String.valu ...

  9. Java中[xxx:xxx,aaa:aaa]格式字符串解析

    Java中[xxx:xxx,aaa:aaa]格式字符串解析 String str = "[name:张三,age:18,phone:15888887777,email:15888887777 ...

最新文章

  1. 微软浏览器适配问题前端_「图」微软新贡献:修复Chromium浏览器的奇怪触控板手势问题...
  2. charles都踩过哪些坑_那些年我学Java踩过的坑
  3. 网站优化之网站文章更新需注意哪些问题?
  4. 导入表编程-枚举导入表
  5. C# 繁体,简体互转
  6. javascript获取浏览器客户端IP
  7. 下载加载linux下用vmware-mount挂载vmdk虚拟硬盘分区
  8. java图片滚动特效_js图片各种滚动效果
  9. 19春学期《计算机应用基础》123,福师11春学期《计算机应用基础》在线作业一...
  10. 【Hive】表生成(Table-Generating)函数
  11. 使用mingw编译log4cpp--问题整理
  12. 谷歌chrome xp_什么是Google Chrome?
  13. 机器视觉编码技术与标准进展
  14. 云计算到底有哪些魅力 云计算就业前景好不好
  15. PAT 1051 复数乘法
  16. 计算机教育中缺失的一课,劝学弟学姝们一句,一定要趁早补上,工作后会事半功倍
  17. canvas多维空间文本粒子js特效
  18. iOS 气泡聊天效果
  19. 对眼睛有益的RGB数值
  20. linux命令gw,Linux命令行配置IP、GW、DNS

热门文章

  1. 基于遥感的大蒜种植面积量测
  2. echarts饼图铺满整个div
  3. public、private、protected的区别
  4. 微信给好友发送这个“隐形代码”,1秒检测出谁删除谁拉黑了你!
  5. 电脑连上WIfi但无网络的问题解决办法
  6. cad解除块的快捷命令_CAD怎么使用快捷命令快速创建永久块?
  7. 什么是资产管理系统 EAM资产管理系统的作用
  8. c语言编程函数名:b开头
  9. LabVIEW视觉采集软件(VAS)、视觉生成器(VB)和视觉开发模块(VDM)之间有什么不同
  10. 天瑞地安科技集团为你解读2017年平面设计大趋势