Groovy'de bir String'in boş olmadığını ve yalnızca boşluk olmadığını nasıl belirleyebilirim?


128

Groovy ekler isAllWhitespace()büyük Strings yöntemini, fakat bir olmak görünmüyor iyi bir dize dışında bir şey varsa belirleme yolu sadece o boşluk.

Bulabildiğim en iyi şey:

myString && !myString.allWhitespace

Ama bu çok ayrıntılı görünüyor. Bu, doğrulama için o kadar yaygın bir şey gibi görünüyor ki, bunu belirlemenin daha basit bir yolu olmalı .

Yanıtlar:


245

Başka bir seçenek de

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

3
myString? .trim (), mantıksal değer döndüren soruların yerine bir dize (veya boş veya boş) döndürür. Sanırım çıktıyı nasıl kullandığınıza bağlı, sadece bir 'eğer' sorun değil.
Steven

12
veyaboolean containsData = myString?.trim()
tim_yates

4
@Steven, Groovy gerçeği, boş veya boş bir dizenin yanlış olduğunu söylüyor, bu nedenle, ()onu zaten bir boolean yapmayacak bir ifadeye ihtiyacınız varsa, onu da sarabilirsiniz . Örneğin,def myVal = (myString?.trim())
cdeszaq

12
@cdeszaq eğer def myVal = (myString?.trim())öyleyse myVal, ya a Stringya da nullolur, parantez içine almak onu bir boole'ye çevirmez . Ancak, onu bir boole değişkenine atarsanız veya kullanırsanız (myString?.trim()) as booleanveya ( if
cevabımdaki

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

9

Daha anlamsal hale getirmek için String'e bir yöntem ekleyebilirsiniz:

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

hangisini yapalım:

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

3
MetaClass değişikliğini yerleştirmek için en iyi yer neresi olabilir?
cdeszaq
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.