如何确定String是否为非null以及Groovy中是否只有空格?


128

Groovy将该isAllWhitespace()方法添加到Strings中,这很棒,但是似乎没有一种确定String是否仅包含空格的方法。

我能想到的最好的方法是:

myString && !myString.allWhitespace

但这似乎太冗长了。验证似乎很普通,必须有一种更简单的方法来确定。

Answers:


245

另一种选择是

if (myString?.trim()) {
  ...
}

3
myString?.trim()返回一个字符串(或null或空白),而不是问题的布尔值。我想这取决于您如何使用输出,对于一个“如果”就可以了。
2012年

12
boolean containsData = myString?.trim()
tim_yates 2012年

4
@ Steven,Groovy真理说空字符串为false,因此(),如果需要将其包装在尚未将其设为布尔值的语句中,也可以将其包装。例如,def myVal = (myString?.trim())
cdeszaq

12
@cdeszaq(如果您这样做的def myVal = (myString?.trim())myVal)是a Stringnull,将其用大括号括起来不会将其更改为布尔值。但是,如果您将其分配给布尔变量或(myString?.trim()) as booleanif语句中使用或(如我的回答)使用它,则正如您所说的,它将使用字符串的Groovy Truth值(或null)
tim_yates 2012年

2
​if ("false") println "that's true too"
tim_yates

9

您可以向String添加一个方法以使其更具语义:

String.metaClass.getNotBlank = { !delegate.allWhitespace }

您可以这样做:

groovy:000> foo = ''
===> 
groovy:000> foo.notBlank
===> false
groovy:000> foo = 'foo'
===> foo
groovy:000> foo.notBlank
===> true

3
放置metaClass修改的最佳位置在哪里?
cdeszaq 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.