在 Java 中检查空字符串或空白字符串
admin
2024-04-16 02:52:33
0

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 中:

org.apache.commonscommons-lang3

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

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

StringUtils.isBlank(string)

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

7. 含番石榴

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

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

com.google.guavaguava31.0.1-jre

Guavas String 类附带方法Strings.isNullOrEmpty:

Strings.isNullOrEmpty(string)

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

8. 结论

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

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

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

相关内容

热门资讯

公司上了94个“数字员工”,干... 内容来源:2026年2月12日,大树AI创业圈视频号第50期 访谈 渊虹分享内容 。 分享嘉宾: 渊...
如何构建一个完美的投票系统?必... 一、明确投票系统的需求 微信搜索关键词(中正投票)一键进入小程序,创建你需要活动模版,一键搭建专属投...
孙宇晨现身GWDC2026:定... 近日,区块链行业的年度盛事GWDC2026在万众瞩目中拉开帷幕。作为本次大会的联合主办方与钻石赞助商...
白癜风医生刘云涛:白癜风与维生... 维生素B族是人体必需的水溶性维生素,包含多种亚型,参与人体新陈代谢、神经系统调节和皮肤细胞修复,对白...
前沿生物:与葛兰素史克签署独家... 前沿生物公告,公司与全球生物制药企业葛兰素史克(GSK)达成一项独家授权许可协议。根据该协议,葛兰素...
原创 加... 美国法院的这一裁决,直接捆住了总统特朗普的手脚,将特朗普手中最厉害的武器直接“没收”了。 也有分析认...
四大航空公司全部增加海南航班 记者2月23日 从海南控股旗下海南机场获悉 海南航空2月26日 海口⇌福州、宁波 共4架次新增航班已...
港股重上27000点 科技黄金... 中新社香港2月23日电 (记者 戴小橦)23日是港股马年第二个交易日,当天港股全线走强,市场情绪显著...
美国伊利诺伊州州长向白宫寄账单... 【环球网报道 记者 索炎琦】据美国有线电视新闻网(CNN)报道,在美国最高法院20日裁定特朗普政府关...
宇树科技+松延动力+魔法原子+... 2026年总台春晚最受关注的亮点之一,当属人形机器人的集体亮相。 宇树科技连续2年登上总台春晚舞台,...
大佬的2025 | | 雷军不... 2025年,又是极具变化的一年。 那些互联网江湖中熟悉的名字,依然在各自的赛道上绽放光彩。不同的是...
评估小红书ROI:除了点赞收藏... 做小红书运营的你,是不是还在盯着点赞、收藏数沾沾自喜?以为数据好看就是ROI爆棚?醒醒!很多时候,千...
披荆斩棘二十年,你甘心回到一个... 春季学期快开学了,意味着又一届学生要毕业了。和十几年前不同,如今名校的光环不再是通往一线城市的通行证...
原创 中... 据央视新闻客户端2月23日报道,美国海关与边境保护局(CBP)表示,将从美国东部时间2月24日起停止...
机构:技术分析显示黄金看涨结构... 据媒体报道,近日,Pepperstone的Dilin Wu在一封电子邮件中表示,根据技术分析,黄金的...
原创 美... 美国频频挥舞关税大棒,欧洲最大经济体德国被迫加快寻求多元合作路径,国际格局正在发生深刻调整。德国总理...
原创 美... 哈喽,大家好,欢迎来到本期深度观察。在过去的几个月里,敏锐的媒体注意到一个令人震惊的现象:中美这两个...
印媒:“光辉”战机再出事故,印... 【环球网报道 记者 闫珮云】据《印度时报》、《今日印度》等印媒当地时间23日援引消息人士的话报道,印...
原创 美... 全球养老基金开始减持美国国债。瑞典养老基金在过去几个月甩卖大量持有份额,丹麦养老基金跟进类似动作。印...
原创 美... 美元的霸权正面临着越来越多的挑战,甚至连美国的重要盟友也开始参与其中。一些专家明确指出,美元时代将悲...