2012-02-06 4 views
74

Groovy aggiunge il metodo isAllWhitespace() a stringhe, che è grande, ma non sembra essere un buon modo per determinarese una stringa ha qualcosa di diverso da solo spazio bianco in esso.Come posso determinare se una stringa non è nulla e non solo lo spazio bianco in Groovy?

Il meglio che ho potuto venire in mente è:

myString && !myString.allWhitespace 

Ma che sembra troppo prolisso. Sembra una cosa così comune per la convalida che lo deve essere un modo più semplice per determinarlo.

+0

è 'if (myString ? .trim()) 'abbastanza? –

risposta

144

Un'altra opzione è

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

myString? .trim() restituisce una stringa (o null o vuota) invece della domanda che restituisce un valore booleano. Suppongo che dipenda da come stai usando l'output, solo per un 'se' va bene. – Steven

+5

o 'boolean containsData = myString? .trim()' –

+1

ah figo, groovy continua ad essere groovy! – Steven

7

Si potrebbe aggiungere un metodo per stringa per renderlo più semantica:

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

che ti permette di fare:

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

Dove sarebbe il posto migliore per mettere la modifica di metaClass? – cdeszaq

Problemi correlati