C # String.IsNullOrEmpty Javascript yang setara

86

Saya ingin mencoba melakukan panggilan string yang setara dengan C # String.IsNullOrEmpty(string)di javascript. Saya mencari online dengan asumsi bahwa ada panggilan sederhana yang harus dilakukan, tetapi saya tidak dapat menemukannya.

Untuk saat ini saya menggunakan if(string === "" || string === null)pernyataan untuk menutupinya, tetapi saya lebih suka menggunakan metode yang telah ditentukan (saya terus mendapatkan beberapa contoh yang lolos karena beberapa alasan)

Apa panggilan javascript terdekat (atau jquery jika memiliki satu) yang akan sama?

Piala Stanley Phil
sumber
3
@ DanielA. Meskipun argumennya sama, tetapi untuk pengembang C # seperti saya, pertanyaan ini (dengan judulnya) lebih mungkin ditemukan
Daniele Armanasco

Jawaban:

212

Anda terlalu banyak berpikir. String kosong dan kosong adalah nilai yang salah dalam JavaScript.

if(!theString) {
 alert("the string is null or empty");
}

Falsey:

  • Salah
  • batal
  • tidak terdefinisi
  • String kosong ''
  • Angka 0
  • Jumlah NaN
JoJo
sumber
16
Luar biasa, ini mendapat begitu banyak suara. Jawaban ini salah. Anda sendiri mengatakan bahwa nilai falsey adalah 0. Jika pengguna mengetik 0 ke dalam bidang, ini bukan string kosong. String kosong secara harfiah adalah string "kosong".
KingOfHypocrites
3
Jika pengguna mengetik 0, nilainya akan menjadi string "0" bukan angka 0. Jadi saya kira akan tetap benar. Silakan posting solusi terbaik Anda, KingOfHypocrites?
Jonas T
2
KingOfHypocrites benar karena string "0" akan memberikan hasil yang salah: "0" == false return true! "0" == false return true
Martien de Jong
2
Berguna. Ketahuilah dataset Anda. Jika "0" atau "false" adalah masukan yang memungkinkan, maka solusi ini mungkin tidak selalu berhasil.
Nevyn
12

Jika, karena alasan apa pun, Anda hanya ingin menguji nulldan empty, Anda dapat melakukan:

function isNullOrEmpty( s ) 
{
    return ( s == null || s === "" );
}

Catatan: Ini juga akan menangkap undefined sebagai @Raynos disebutkan di komentar.

Kode Maverick
sumber
dapat dioptimalkan untukreturn (s == null || s === "")
Raynos
@Raynos - Mengapa == bukannya === sehubungan dengan null? Dan bagaimana jika objek yang diteruskan tidak terdefinisi? undefined <> null, bukan?
Kode Maverick
s == nullmenangkap keduanya null& undefinedsejaknull == undefined
Raynos
@Raynos - Oke, saya mengerti, tetapi jika Anda ingin benar-benar tahu undefined atau null, Anda harus menggunakan ===, benar?
Kode Maverick
5

Jika Anda tahu itu stringbukan numerik, ini akan berfungsi:

if (!string) {
  .
  .
  .
awm
sumber
String "0" adalah salah, jadi Anda tidak perlu memeriksa apakah string itu numerik.
JoJo
1
Ya, string "0" adalah benar, tetapi jika variabel stringsebenarnya bukan string tetapi Angka nol, maka stringakan menjadi salah. Ini tidak akan menjadi masalah jika kita tahu itu stringadalah string atau null yang sebenarnya.
awm
3

Anda bisa melakukannya

if(!string)
{
  //...
}

Ini akan memeriksa stringstring tidak terdefinisi, null, dan kosong.

Gelas pecah
sumber
1

Untuk lebih jelasnya, di if(!theString){//...}mana theString adalah variabel yang tidak dideklarasikan akan melemparkan kesalahan yang tidak ditentukan, tidak menemukannya benar. Di sisi lain jika Anda memiliki: if(!window.theString){//...}atau var theString; if(!theString){//...}akan bekerja seperti yang diharapkan. Dalam kasus di mana variabel mungkin tidak dideklarasikan (sebagai lawan menjadi properti atau tidak ditetapkan), Anda perlu menggunakan:if(typeof theString === 'undefined'){//...}

Preferensi saya adalah membuat fungsi prototipe yang membungkusnya untuk Anda.

Craig
sumber
1

Karena jawaban yang ditandai sebagai benar mengandung kesalahan kecil, inilah usaha terbaik saya untuk menemukan solusi. Saya punya dua opsi, satu yang mengambil string, yang lain mengambil string atau angka, karena saya berasumsi banyak orang mencampur string dan angka dalam javascript.

Langkah-langkah: -Jika objek null itu adalah null atau string kosong. -Jika tipenya bukan string (atau angka), nilai stringnya adalah null atau kosong. CATATAN: kami mungkin juga membuat pengecualian di sini, tergantung pada preferensi. -Jika nilai string yang dipotong memiliki panjang yang lebih kecil dari 1 nilainya null atau kosong.

var stringIsNullOrEmpty = function(theString)
{
    return theString == null || typeof theString != "string" || theString.trim().length < 1;
}

var stringableIsNullOrEmpty = function(theString)
{
    if(theString == null) return true;
    var type = typeof theString;
    if(type != "string" && type != "number") return true;
    return theString.toString().trim().length < 1;
}
Martien de Jong
sumber
1

Anda bisa mengatakannya dengan logika

Katakanlah Anda memiliki nama variabel strVal, untuk memeriksa apakah nol atau kosong

if (typeof (strVal) == 'string' && strVal.length > 0) 
{
// is has a value and it is not null  :)
}
else
{
//it is null or empty :(
}
Ahmad Hindash
sumber
1

Anda dapat membuat satu metode Utilitas yang dapat digunakan kembali di banyak tempat seperti:

 function isNullOrEmpty(str){
    var returnValue = false;
    if (  !str
        || str == null
        || str === 'null'
        || str === ''
        || str === '{}'
        || str === 'undefined'
        || str.length === 0 ) {
        returnValue = true;
    }
    return returnValue;
  }
Anjum ....
sumber