如何确定 String 是否是非空的,而不仅仅是 Groovy 中的空格?

Groovy 将 isAllWhitespace()方法添加到 String 中,这很棒,但似乎没有 很好方法来确定 String 中是否存在除 只是空格以外的其他内容。

我能想到的最好答案是:

myString && !myString.allWhitespace

但这似乎太冗长了。对于验证来说,这似乎是一件很常见的事情,因此 必须的有一种更简单的方法来确定这一点。

248547 次浏览

另一个选择是

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

(使用 弦乐的绝妙真理)

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

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

让我们这样做:

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

我发现这种方法是快速和通用的:

static boolean isNullOrEmpty(String str) { return (str == null || str.allWhitespace) }


// Then I often use it in this manner
DEF_LOG_PATH = '/my/default/path'
logPath = isNullOrEmpty(log_path) ? DEF_LOG_PATH : log_path

不过,我对于使用 groovy 还是相当新的,所以我不确定是否存在一种方法可以使它成为 String 类型的实际扩展方法,而且这种方法工作得足够好,以至于我都懒得去查看。

谢谢, MH

它在我的 Grails 2.1项目中很有用:

String str = someObj.getSomeStr()?.trim() ?: "Default value"

“-> str = “ Default value”如果 somObjec.getSomStr ()为 null 或空“-> str = “ Default value”
如果 somObjec.getsomStr () = “ some Value”-> str = “ some Value”