Bagaimana cara menentukan apakah String bukan null dan bukan hanya spasi di Groovy?


128

Groovy menambahkan isAllWhitespace()metode ke Strings, yang bagus, tetapi tampaknya tidak ada cara yang baik untuk menentukan apakah String memiliki sesuatu selain hanya ruang putih di dalamnya.

Yang terbaik yang bisa saya dapatkan adalah:

myString && !myString.allWhitespace

Tapi sepertinya itu terlalu bertele-tele. Ini sepertinya hal yang umum untuk validasi sehingga harus ada cara yang lebih sederhana untuk menentukannya.

Jawaban:


245

Pilihan lainnya adalah

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

3
myString? .trim () mengembalikan string (atau null atau blank) alih-alih pertanyaan yang mengembalikan boolean. Saya kira itu tergantung bagaimana Anda menggunakan output, hanya untuk 'jika' tidak masalah.
Steven

12
atauboolean containsData = myString?.trim()
tim_yates

4
@Steven, kebenaran Groovy mengatakan bahwa null atau string kosong itu salah, jadi Anda bisa membungkusnya ()juga jika Anda membutuhkannya dalam pernyataan yang tidak akan membuatnya menjadi boolean. Misalnya,def myVal = (myString?.trim())
cdeszaq

12
@cdeszaq jika Anda melakukannya def myVal = (myString?.trim())maka myValadalah a Stringatau null, membungkusnya dengan tanda kurung tidak akan mengubahnya menjadi boolean. Namun, jika Anda menetapkannya ke variabel boolean atau menggunakan (myString?.trim()) as booleanatau (seperti dalam jawaban saya) menggunakannya dalam sebuah ifpernyataan, maka seperti yang Anda katakan itu akan menggunakan nilai Groovy Truth dari string (atau null)
tim_yates

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

9

Anda dapat menambahkan metode ke String agar lebih semantik:

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

yang memungkinkan Anda melakukannya:

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

3
Di manakah tempat terbaik untuk meletakkan modifikasi metaClass?
cdeszaq
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.