Stringがnullでなく、Groovyの空白だけではないかどうかをどのように判断できますか?


128

Groovyは追加されますisAllWhitespace()素晴らしいです文字列にする方法を、が、があるようには思えない良い文字列以外の何かがあるかどうかを判断する方法だけで、その中に空白を。

私が思いつくことができた最高のものは:

myString && !myString.allWhitespace

しかし、それは冗長すぎるようです。これは、これを確認するためのより簡単な方法がなければならないという検証の一般的なことのようです。

回答:


245

別のオプションは

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

3
myString?.trim()は、ブール値を返す質問の代わりに文字列(またはnullまたは空白)を返します。私はそれがあなたが出力をどのように使用しているかに依存すると思います、もし 'if'の場合はそれで結構です。
スティーブン

12
またはboolean containsData = myString?.trim()
tim_yates 2012

4
@ Steven、Groovyの真実は、nullまたは空の文字列はfalseであること()を示しているため、まだブール値にしないステートメントで必要な場合は、ラップすることもできます。たとえば、def myVal = (myString?.trim())
cdeszaq

12
@cdeszaqあなたがしなければdef myVal = (myString?.trim())、その後はmyValどちらかであるStringnull、中括弧でそれをラップするブール値に変更していません。ただし、ブール変数に割り当てるか(myString?.trim()) as booleanifステートメントで使用または(私の答えのように)使用する場合、あなたが言う
とおり

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.