在 Java 中检查空字符串或空白字符串
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#isEmpty和String#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有两种版本:android和jre。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 中检查空字符串或空白字符串相关推荐
- Java解决空引用_在java中检查空引用的乐观方法
本问题已经有最佳答案,请猛点这里访问. 任何Java精通/专家都能告诉我,在使用null来避免EDCOX1×0时,检查空引用或对象的乐观方式是什么? 在我的代码中,我有100多个字段,其中大部分是为了 ...
- hive 判断子字符串_Java中检查空字符串(null或空白)的方法有几种?
说明: 本文为牛旦教育原创,头条首发,转发须注明来源和原文网址. 1.摘要 在本文中,我们将介绍些方法检查Java中的空字符串(空的或空白符串).我们有些语言的原生方法以及几个库可用. 2.空与空白( ...
- java 返回空数组_避免在Java中检查Null语句
1.概述 通常,在Java代码中处理null变量.引用和集合很棘手.它们不仅难以识别,而且处理起来也很复杂.事实上,在编译时无法识别处理null的任何错误,会导致运行时NullPointerExcep ...
- java 删除二维数组中的null_避免在Java中检查Null语句
1.概述 通常,在Java代码中处理null变量.引用和集合很棘手.它们不仅难以识别,而且处理起来也很复杂.事实上,在编译时无法识别处理null的任何错误,会导致运行时NullPointerExcep ...
- java反转函数_在JAVA中,下列哪个函数可用于字符串的反转?
在JAVA中,下列哪个函数可用于字符串的反转? 更多相关问题 很多危机是无法准确预测的,必须为危机做好准备,包括().通信计划以及重要关系的建立等. (A) 危 幼儿园科技小制作可分为模型类.动力类. ...
- java 空文件夹删除_删除Java中的空文件夹,处理隐藏文件
我想删除java中的空文件夹,这里是我的代码: try (DirectoryStream stream = Files.newDirectoryStream(path)) { for (Path fi ...
- Java中获得了方法名称的字符串,怎么样调用该方法
问题: Java中获得了方法名称的字符串,怎么样调用该方法 如果我有以下两个变量 Object obj; String methodName = "getName"; 在不知道ob ...
- JAVA中如何将大数字或字符串放进数组
JAVA中如何将大数字或字符串放进数组 在JAVA学习过程中字符串.数组.数字之间的 的转换经常用到,记录一些非常基础的转换. 1.将数字转换为字符串:String str = String.valu ...
- Java中[xxx:xxx,aaa:aaa]格式字符串解析
Java中[xxx:xxx,aaa:aaa]格式字符串解析 String str = "[name:张三,age:18,phone:15888887777,email:15888887777 ...
最新文章
- 微软浏览器适配问题前端_「图」微软新贡献:修复Chromium浏览器的奇怪触控板手势问题...
- charles都踩过哪些坑_那些年我学Java踩过的坑
- 网站优化之网站文章更新需注意哪些问题?
- 导入表编程-枚举导入表
- C# 繁体,简体互转
- javascript获取浏览器客户端IP
- 下载加载linux下用vmware-mount挂载vmdk虚拟硬盘分区
- java图片滚动特效_js图片各种滚动效果
- 19春学期《计算机应用基础》123,福师11春学期《计算机应用基础》在线作业一...
- 【Hive】表生成(Table-Generating)函数
- 使用mingw编译log4cpp--问题整理
- 谷歌chrome xp_什么是Google Chrome?
- 机器视觉编码技术与标准进展
- 云计算到底有哪些魅力 云计算就业前景好不好
- PAT 1051 复数乘法
- 计算机教育中缺失的一课,劝学弟学姝们一句,一定要趁早补上,工作后会事半功倍
- canvas多维空间文本粒子js特效
- iOS 气泡聊天效果
- 对眼睛有益的RGB数值
- linux命令gw,Linux命令行配置IP、GW、DNS
热门文章
- 基于遥感的大蒜种植面积量测
- echarts饼图铺满整个div
- public、private、protected的区别
- 微信给好友发送这个“隐形代码”,1秒检测出谁删除谁拉黑了你!
- 电脑连上WIfi但无网络的问题解决办法
- cad解除块的快捷命令_CAD怎么使用快捷命令快速创建永久块?
- 什么是资产管理系统 EAM资产管理系统的作用
- c语言编程函数名:b开头
- LabVIEW视觉采集软件(VAS)、视觉生成器(VB)和视觉开发模块(VDM)之间有什么不同
- 天瑞地安科技集团为你解读2017年平面设计大趋势