Apakah ada cara yang lebih baik daripada yang berikut untuk memeriksa untuk melihat apakah sebuah string nil ATAU memiliki panjang 0 di Ruby?
if !my_string || my_string.length == 0
return true
else
return false
end
Di C # ada yang berguna
string.IsNullOrEmpty(myString)
Adakah yang mirip dengan itu di Ruby?
my_string || my_string.length == 0
akan menaikkanNoMethodError
jikamy_string
nihil. Saya pikir Anda maksud:my_string.nil? || my_string.length == 0
!my_string || my_string.length == 0
Jawaban:
Ketika saya tidak khawatir tentang kinerja, saya akan sering menggunakan ini:
Ada berbagai variasi, tentu saja ...
sumber
strip
bisa sangat tidak efisien.Jika Anda ingin meminta ActiveSupport, Anda bisa menggunakan
#blank?
metode yang ditentukan untuk NilClass dan String.sumber
Saya suka melakukan ini sebagai berikut (dalam lingkungan non Rails / ActiveSupport):
ini bekerja karena:
sumber
string.to_s.empty?
bekerja untuk keduanyanil
dan""
.Alternatif untuk proposal jcoby adalah:
sumber
Seperti yang dikatakan di sini sebelum Rails (ActiveSupport) ada yang kosong berguna ? metode dan diimplementasikan seperti ini:
Cukup mudah untuk ditambahkan ke proyek berbasis ruby.
Keindahan dari solusi ini adalah ia bekerja secara ajaib-otomatis tidak hanya untuk Strings tetapi juga untuk Array dan tipe lainnya.
sumber
variable.blank? akan melakukannya. Ini mengembalikan true jika string kosong atau jika string kosong.
sumber
nil?
dapat dihilangkan dalam konteks boolean. Secara umum, Anda dapat menggunakan ini untuk mereplikasi kode C #:sumber
Pertama-tama, waspadalah terhadap metode itu:
Seperti yang dikatakan Jesse Ezel :
Dan jika Anda menambal kelas String ... pastikan NilClass juga belum ditambal !
sumber
Setiap kelas memiliki
nil?
metode:Dan string memiliki
empty?
metode:Ingatlah bahwa string tidak sama
nil
ketika kosong, jadi gunakanempty?
metode ini untuk memeriksa apakah string kosong.sumber
Pilihan lain adalah mengonversi nol ke hasil kosong dengan cepat:
(my_string||'').empty?
sumber
Konrad Rudolph memiliki jawaban yang tepat.
Jika itu benar-benar mengganggu Anda, monyet tambal kelas String atau menambahkannya ke kelas / modul pilihan Anda. Ini benar-benar bukan praktik yang baik untuk menambal objek inti kecuali Anda memiliki alasan yang sangat menarik.
Maka Anda bisa melakukannya
String.nilorempty? mystring
sumber
Periksa string kosong di Ruby polos sambil menghindari pengecualian NameError
Ada beberapa jawaban yang baik di sini, tetapi Anda tidak perlu ActiveSupport atau monyet-patching untuk mengatasi kasus penggunaan umum di sini. Sebagai contoh:
Ini akan "melakukan hal yang benar" jika my_string nil atau string kosong, tetapi tidak akan memunculkan exception NameError jika my_string tidak didefinisikan. Ini umumnya lebih disukai daripada yang lebih dibuat-buat:
atau yang lebih verbose sejenisnya, karena pengecualian harus benar-benar disimpan untuk hal-hal yang tidak Anda harapkan terjadi. Dalam hal ini, walaupun mungkin merupakan kesalahan umum, variabel yang tidak terdefinisi tidak benar-benar keadaan yang luar biasa, sehingga harus ditangani sesuai.
Jarak tempuh Anda mungkin beragam.
sumber
Sudahkah Anda mencoba Perbaikan?
sumber
Jika Anda menggunakan rel, Anda bisa menggunakan
#present?
Jadi, sebaliknya periksa untuk penggunaan nol atau panjang nol
!present?
sumber
Di rel Anda bisa mencoba
#blank?
.Peringatan: itu akan memberi Anda positif ketika string terdiri dari spasi:
Hanya ingin menunjukkannya. Mungkin itu sesuai dengan kebutuhan Anda
UPD. mengapa saya mendapatkan pertanyaan lama di feed saya? Maaf untuk necroposting.
sumber
Untuk pegolf kode:
Atau jika Anda bukan seorang pegolf (membutuhkan ruby 2.3 atau yang lebih baru):
sumber