C # String.IsNullOrEmpty Javascript eşdeğeri


86

String.IsNullOrEmpty(string)JavaScript'te C # ile eşdeğer dize çağrısı yapmayı denemek istiyorum . Yapılması gereken basit bir arama olduğunu varsayarak internete baktım, ancak bulamadım.

Şimdilik if(string === "" || string === null)bunu örtmek için bir ifade kullanıyorum , ancak önceden tanımlanmış bir yöntem kullanmayı tercih ederim (bazı nedenlerden dolayı kayan bazı örnekler almaya devam ediyorum)

Eşit olacak en yakın javascript (veya varsa jquery) çağrısı nedir?



3
@ DanielA.Beyaz argüman aynı, ancak benim gibi bir C # geliştiricisi için bu sorunun (başlığıyla birlikte) bulunma olasılığı daha yüksek
Daniele Armanasco

Yanıtlar:


212

Fazla düşünüyorsun. Null ve boş dizelerin ikisi de JavaScript'teki yanlış değerlerdir.

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

Falsey:

  • yanlış
  • boş
  • Tanımsız
  • Boş dize ''
  • 0 sayısı
  • NaN sayısı

16
Bunun çok fazla oy alması şaşırtıcı. Bu cevap yanlıştır. Yanlış değerin 0 olacağını kendiniz söylediniz. Kullanıcı bir alana 0 yazarsa bu boş bir dize değildir. Boş bir dize, kelimenin tam anlamıyla "boş" bir dizedir.
KingOfHypocrites

3
Kullanıcı 0 yazarsa, değer 0 değil "0" dizesi olacaktır. Yani sanırım yine de doğru olacaktır. Lütfen en iyi çözümünüzü gönderin, KingOfHypocrites?
Jonas T

2
KingOfHypocrites, "0" dizesinin yanlış bir sonuç vereceği konusunda haklıdır: "0" == false true döndürür! "0" == false, true
değerini

2
Kullanışlı. Yine de veri kümenizi bilin. Olası girişler "0" veya "yanlış" ise, bu çözüm her zaman işe yaramayabilir.
Nevyn

12

Herhangi bir nedenle, yalnızca test etmek istediyseniz nullve emptyşunları yapabilirsiniz:

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

Not: Bu, yorumlarda belirtilen @Raynos olarak tanımsız da yakalayacaktır.


optimize edilebilirreturn (s == null || s === "")
Raynos

@Raynos - Null ile ilgili olarak === yerine neden ==? Peki ya geçen nesne tanımsızsa? tanımsız <> boş, değil mi?
Code Maverick

s == nullhem null& undefinedberi yakalarnull == undefined
Raynos

@Raynos - Tamam, anladım, ancak gerçekten tanımlanmamış veya boş bilmek istiyorsanız, === kullanmanız gerekir, doğru mu?
Code Maverick


5

Bunun stringsayısal olmadığını biliyorsanız , bu işe yarayacaktır:

if (!string) {
  .
  .
  .

"0" dizesi yanlıştır, bu nedenle dizenin sayısal olup olmadığını kontrol etmeniz gerekmez.
JoJo

1
Evet, "0" dizesi doğrudur, ancak değişken stringaslında bir dize değil de Sayı sıfırsa, o stringzaman yanlış olacaktır. Bunun stringgerçek bir dize veya boş olduğunu bilirsek sorun olmaz.
awm

3

sadece yapabilirsin

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

Bu stringtanımsız, boş ve boş dizge olup olmadığını kontrol edecektir .


1

Açık olmak if(!theString){//...}gerekirse, dizenin bildirilmemiş bir değişken olduğu durumda tanımsız bir hata atar, doğru bulmaz. Öte yandan eğer varsa: if(!window.theString){//...}veya var theString; if(!theString){//...}beklendiği gibi çalışacaktır. Bir değişkenin beyan edilememesi durumunda (bir özellik olmanın veya hiç ayarlanmamasının aksine), şunları kullanmanız gerekir:if(typeof theString === 'undefined'){//...}

Tercihim, onu sizin için tamamlayan bir prototip işlevi oluşturmaktır.


1

Doğru olarak işaretlenen cevap küçük bir hata içerdiğinden, bir çözüm bulmak için en iyi denemem burada. Javascript'te birçok kişinin dizeleri ve sayıları karıştırdığını varsaydığım için iki seçeneğim var, biri bir dizi alır, diğeri bir dizi veya bir sayı alır.

Adımlar: - Nesne null ise boş veya boş bir dizedir. -Tip bir dize (veya sayı) değilse, dize değeri null veya boştur. NOT: Tercihlere bağlı olarak burada da bir istisna oluşturabiliriz. -Kırpılan dize değeri 1'den küçük bir uzunluğa sahipse, null veya boştur.

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;
}

1

mantıkla söyleyebilirsin

Boş veya boş olup olmadığını kontrol etmek için bir strVal adında bir değişkeniniz olduğunu varsayalım

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

1

Aşağıdakiler gibi birçok yerde yeniden kullanılabilecek bir Yardımcı Program yöntemi oluşturabilirsiniz:

 function isNullOrEmpty(str){
    var returnValue = false;
    if (  !str
        || str == null
        || str === 'null'
        || str === ''
        || str === '{}'
        || str === 'undefined'
        || str.length === 0 ) {
        returnValue = true;
    }
    return returnValue;
  }
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.