Bagaimana saya bisa mengecek apakah suatu string bukan nol dan tidak kosong?
public void doStuff(String str)
{
if (str != null && str != "**here I want to check the 'str' is empty or not**")
{
/* handle empty string */
}
/* ... */
}
java
string
string-comparison
Bernhard Barker
sumber
sumber
PreparedStatement
dan bukannya membangun kueri SQL dengan string primitif gabungan. Hindari semua jenis kerentanan injeksi, jauh lebih mudah dibaca, dll.Jawaban:
Bagaimana dengan isEmpty () ?
Pastikan untuk menggunakan bagian-bagian
&&
dalam urutan ini, karena java tidak akan melanjutkan untuk mengevaluasi bagian kedua jika bagian pertama&&
gagal, sehingga memastikan Anda tidak akan mendapatkan pengecualian penunjuk nol daristr.isEmpty()
jikastr
nol.Hati-hati, ini hanya tersedia sejak Java SE 1.6. Anda harus memeriksa
str.length() == 0
versi sebelumnya.Untuk mengabaikan spasi putih juga:
(sejak Java 11
str.trim().isEmpty()
dapat dikurangistr.isBlank()
yang juga akan menguji ruang putih Unicode lainnya)Dibungkus dalam fungsi praktis:
Menjadi:
sumber
isEmpty()
tampaknya membutuhkan instance String (non-statis). Meminta ini pada referensi nol akan melempar NullPointerException.TextUtils.isEmpty(String)
untuk memeriksa apakah string kosong atau nol. Bagus dan pendek. Kelas TextUtils adalah bagian dari Android SDK.(str != null && str.length() > 0)
.Gunakan org.apache.commons.lang.StringUtils
Saya suka menggunakan Apache commons-lang untuk hal-hal seperti ini, dan terutama kelas utilitas StringUtils :
sumber
isEmpty
atauisBlank
, mungkin tidak berguna untuk menyertakan perpustakaan pihak ketiga. Anda cukup membuat kelas utilitas Anda sendiri untuk menyediakan metode seperti itu. Namun, seperti yang dijelaskan Bozho,commons-lang
proyek ini menyediakan banyak metode bermanfaat!StringUtils.isNotBlank(str)
melakukan pengecekan null juga.Cukup tambahkan Android di sini:
sumber
Untuk menambahkan ke @BJorn dan @SeanPatrickFloyd Cara Guava untuk melakukan ini adalah:
Commons Lang lebih mudah dibaca pada waktu-waktu tertentu tetapi saya perlahan-lahan lebih mengandalkan Guava dan kadang-kadang Commons Lang membingungkan ketika datang ke
isBlank()
(seperti apa spasi atau tidak).Commons Lang versi Guava adalah
isBlank
:Saya akan mengatakan kode yang tidak memungkinkan
""
(kosong) DANnull
mencurigakan dan berpotensi buggy karena mungkin tidak menangani semua kasus di mana tidak memungkinkannull
masuk akal (meskipun untuk SQL saya bisa mengerti karena SQL / HQL aneh tentang''
).sumber
kalau tidak
atau
Catatan: Pemeriksaan kedua (alternatif pertama dan kedua) mengasumsikan str bukan nol. Tidak apa-apa hanya karena cek pertama melakukan itu (dan Java tidak melakukan pemeriksaan kedua jika yang pertama salah)!
PENTING: JANGAN gunakan == untuk persamaan string. == memeriksa pointer sama, bukan nilainya. Dua string dapat berada di alamat memori yang berbeda (dua contoh) tetapi memiliki nilai yang sama!
sumber
Hampir setiap perpustakaan yang saya kenal mendefinisikan kelas utilitas yang disebut
StringUtils
,StringUtil
atauStringHelper
, dan mereka biasanya menyertakan metode yang Anda cari.Favorit pribadi saya adalah Apache Commons / Lang , di mana di kelas StringUtils , Anda mendapatkan keduanya(Yang pertama memeriksa apakah sebuah string adalah nol atau kosong, yang kedua memeriksa apakah itu null, kosong atau hanya spasi putih)
Ada kelas utilitas serupa di Spring, Wicket dan banyak lib lainnya. Jika Anda tidak menggunakan perpustakaan eksternal, Anda mungkin ingin memperkenalkan kelas StringUtils di proyek Anda sendiri.Update: bertahun-tahun telah berlalu, dan hari ini saya akan merekomendasikan menggunakan Jambu 's
Strings.isNullOrEmpty(string)
metode.sumber
Ini bekerja untuk saya:
sumber
Bagaimana tentang:
sumber
&&
jika if == null, sehingga mencegah NullPointerException. (Sumber: Saya baru saja mencoba)Gunakan metode Apache StringUtils isNotBlank seperti
Ini akan mengembalikan true hanya jika str tidak nol dan tidak kosong.
sumber
Anda harus menggunakan
org.apache.commons.lang3.StringUtils.isNotBlank()
atauorg.apache.commons.lang3.StringUtils.isNotEmpty
. Keputusan antara keduanya didasarkan pada apa yang sebenarnya ingin Anda periksa.The isNotBlank () cek yang parameter input:
The isNotEmpty () cek hanya bahwa parameter input
sumber
Mengembalikan nilai true atau false berdasarkan input
sumber
Jika Anda tidak ingin menyertakan seluruh perpustakaan; cukup sertakan kode yang Anda inginkan darinya. Anda harus memeliharanya sendiri; tapi itu fungsi yang cukup lurus ke depan. Ini disalin dari commons.apache.org
sumber
Ini agak terlambat, tetapi di sini ada gaya fungsional untuk memeriksa:
sumber
Ada metode baru di java-11:
String#isBlank
Ini dapat digabungkan dengan
Optional
untuk memeriksa apakah string nol atau kosongString # isBlank
sumber
test sama dengan string kosong dan null dalam kondisi yang sama:
Tidak melempar
NullPointerException
jika str adalah null, karenaObject.equals()
mengembalikan false jika arg adalahnull
.konstruk lainnya
str.equals("")
akan melempar yang ditakutiNullPointerException
. Beberapa orang mungkin menganggap bentuk buruk menggunakan String literal sebagai objek yangequals()
disebut tetapi melakukan pekerjaan.Periksa juga jawaban ini: https://stackoverflow.com/a/531825/1532705
sumber
str != null
.!"".equals(str)
sudah melakukan pekerjaanSolusi sederhana:
sumber
Seperti kata seanizer di atas, Apache StringUtils sangat bagus untuk ini, jika Anda memasukkan jambu biji, Anda harus melakukan hal berikut;
Bolehkah saya juga merekomendasikan agar Anda merujuk ke kolom di hasil yang Anda atur dengan nama daripada dengan indeks, ini akan membuat kode Anda lebih mudah dipelihara.
sumber
Saya telah membuat fungsi utilitas saya sendiri untuk memeriksa beberapa string sekaligus, daripada memiliki pernyataan if penuh
if(str != null && !str.isEmpty && str2 != null && !str2.isEmpty)
. Ini fungsinya:jadi saya bisa menulis:
sumber
areSet(String... strings)
kemudian dapat dipanggil tanpa pembuatan array:if(!StringUtils.areSet(firstName, lastName, address))
Jika Anda menggunakan Java 8 dan ingin memiliki pendekatan Pemrograman yang Lebih Fungsional, Anda dapat menentukan
Function
yang mengelola kontrol dan kemudian Anda dapat menggunakannya kembali danapply()
kapan pun diperlukan.Datang untuk berlatih, Anda dapat mendefinisikan
Function
sebagaiKemudian, Anda dapat menggunakannya hanya dengan memanggil
apply()
metode sebagai:Jika Anda mau, Anda dapat menentukan
Function
yang memeriksa apakahString
kosong dan kemudian meniadakannya!
.Dalam hal ini,
Function
akan terlihat seperti:Kemudian, Anda dapat menggunakannya hanya dengan memanggil
apply()
metode sebagai:sumber
Dengan Java 8 Opsional Anda dapat melakukan:
Dalam ungkapan ini, Anda akan menangani
String
s yang terdiri dari spasi juga.sumber
Anda dapat menggunakan StringUtils.isEmpty (), Ini akan menghasilkan true jika string tersebut null atau kosong.
akan menghasilkan
str1 adalah nol atau kosong
str2 adalah nol atau kosong
sumber
isNotBlank
Saya akan menyarankan Guava atau Apache Commons sesuai dengan kebutuhan Anda yang sebenarnya. Periksa berbagai perilaku dalam kode contoh saya:
Hasil:
Apache:
a kosong
b kosong
c kosong
Google:
b adalah NullOrEmpty
c adalah NullOrEmpty
sumber
Jika Anda menggunakan Spring Boot maka kode di bawah ini akan melakukan Pekerjaan
sumber
Untuk kelengkapan: Jika Anda sudah menggunakan kerangka Spring , StringUtils menyediakan metode
serta metodenya
sumber
Cukup, untuk mengabaikan ruang putih juga:
sumber
Jika Anda menggunakan kerangka kerja Spring maka Anda dapat menggunakan metode:
Metode ini menerima Objek apa pun sebagai argumen, membandingkannya dengan null dan String kosong. Sebagai akibatnya, metode ini tidak akan pernah mengembalikan true untuk objek non-null non-null
sumber
StringUtils
secara eksplisit menyatakan "Terutama untuk penggunaan internal dalam kerangka kerja; pertimbangkan Apache Commons Lang untuk rangkaian utilitas String yang lebih komprehensif."Cara yang lebih baik untuk menangani null dalam string adalah,
Pendeknya,
sumber
Untuk memeriksa apakah semua atribut string dalam objek kosong (Alih-alih menggunakan! = Null pada semua nama bidang mengikuti pendekatan api refleksi java
Metode ini akan mengembalikan true jika semua nilai bidang String kosong, Ini akan mengembalikan false jika ada satu nilai hadir dalam atribut String
sumber
Saya telah mengalami situasi di mana saya harus memeriksa bahwa "null" (sebagai string) harus dianggap kosong. Juga ruang putih dan nol aktual harus mengembalikan true. Saya akhirnya menetapkan fungsi berikut ...
sumber
Jika Anda perlu memvalidasi parameter metode Anda, Anda dapat menggunakan ikuti metode sederhana
Contoh:
sumber