在 Java 中检查空字符串或空白字符串
创始人
2024-03-13 19:15:01
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上查看所有这些示例。

相关内容

热门资讯

美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...