C # String.IsNullOrEmpty Javascript odpowiednik

86

Chcę spróbować wykonać wywołanie ciągu odpowiadające C # String.IsNullOrEmpty(string)w javascript. Szukałem w Internecie, zakładając, że jest prosty telefon do wykonania, ale nie mogłem go znaleźć.

Na razie używam if(string === "" || string === null)oświadczenia, aby to zakryć, ale wolałbym użyć predefiniowanej metody (z jakiegoś powodu wciąż otrzymuję niektóre wystąpienia, które przemykają)

Jakie jest najbliższe wywołanie javascript (lub jquery, jeśli ma takie), które byłoby równe?

Puchar Stanleya Phil
źródło
3
@ Daniel A. Biały argument jest taki sam, ale dla programisty C # takiego jak ja to pytanie (wraz z tytułem) jest bardziej prawdopodobne
Daniele Armanasco

Odpowiedzi:

211

Nadmiernie się zastanawiasz. Null i pusty ciąg są wartościami fałszywymi w JavaScript.

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

Falsey:

  • fałszywy
  • zero
  • nieokreślony
  • Pusty ciąg ''
  • Liczba 0
  • Liczba NaN
JoJo
źródło
16
Niesamowite, że otrzymało tak wiele głosów pozytywnych. Ta odpowiedź jest nieprawidłowa. Sam powiedziałeś, że wartość falsey będzie równa 0. Jeśli użytkownik wpisze 0 w polu, nie jest to pusty ciąg. Pusty ciąg to dosłownie „pusty” ciąg.
KingOfHypocrites
3
Jeśli użytkownik wpisze 0, wartość będzie ciągiem „0”, a nie liczbą 0. Tak więc myślę, że nadal będzie to prawda. Prześlij swoje najlepsze rozwiązanie, KingOfHypocrites?
Jonas T
2
KingOfHypocrites ma rację, ponieważ ciąg „0” da niepoprawny wynik: „0” == false zwraca true! „0” == false zwraca true
Martien de Jong
2
Przydatny. Jednak poznaj swój zestaw danych. Jeśli możliwe są dane wejściowe „0” lub „false”, to rozwiązanie może nie zawsze działać.
Nevyn
12

Jeśli z jakiegoś powodu chciałbyś tylko przetestować nulli emptymógłbyś zrobić:

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

Uwaga: spowoduje to również złapanie undefined jako @Raynos wspomnianego w komentarzach.

Code Maverick
źródło
można zoptymalizować doreturn (s == null || s === "")
Raynos
@Raynos - Dlaczego == zamiast === w odniesieniu do null? A co, jeśli przekazany obiekt jest niezdefiniowany? undefined <> null, prawda?
Code Maverick
s == nullłapie oba nulli undefinedod tego czasunull == undefined
Raynos
@Raynos - Ok, rozumiem, ale w przypadku, gdy naprawdę chcesz znać undefined lub null, musisz użyć ===, prawda?
Code Maverick
5

Jeśli wiesz, że stringto nie jest liczba, to zadziała:

if (!string) {
  .
  .
  .
awm
źródło
Ciąg „0” jest błędny, więc nie musisz sprawdzać, czy jest on numeryczny.
JoJo
1
Tak, ciąg „0” jest truthy, ale jeśli zmienna stringnie jest w rzeczywistości ciąg ale numer zero, to stringbędzie falsey. Nie będzie problemu, jeśli wiemy, że stringjest to rzeczywisty ciąg lub wartość null.
awm
3

możesz po prostu zrobić

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

Spowoduje to sprawdzenie stringniezdefiniowanego, pustego i pustego ciągu.

Rozbite szkło
źródło
1

Dla jasności, gdy if(!theString){//...}theString jest niezadeklarowaną zmienną, spowoduje zgłoszenie niezdefiniowanego błędu, a nie stwierdzenie, że jest prawdziwy. Z drugiej strony, jeśli masz: if(!window.theString){//...}lub var theString; if(!theString){//...}będzie działać zgodnie z oczekiwaniami. W przypadku, gdy zmienna nie może zostać zadeklarowana (w przeciwieństwie do bycia właściwością lub po prostu nie ustawionej), należy użyć:if(typeof theString === 'undefined'){//...}

Wolę stworzyć prototypową funkcję, która zamknie ją za Ciebie.

Craig
źródło
1

Ponieważ odpowiedź oznaczona jako poprawna zawiera mały błąd, oto moja najlepsza próba znalezienia rozwiązania. Mam dwie opcje, jedną, która przyjmuje ciąg, a drugą ciąg lub liczbę, ponieważ zakładam, że wiele osób miesza ciągi i liczby w javascript.

Kroki: -Jeśli obiekt jest pusty, jest to ciąg pusty lub pusty. -Jeśli typ nie jest ciągiem (lub liczbą), jego wartość w postaci ciągu jest pusta lub pusta. UWAGA: tutaj również możemy zgłosić wyjątek, w zależności od preferencji. -Jeśli przycięta wartość ciągu ma długość mniejszą niż 1, jest pusta lub pusta.

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
źródło
1

można to powiedzieć logicznie

Powiedzmy, że masz zmienną o nazwie strVal, aby sprawdzić, czy jest pusta lub pusta

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

Możesz utworzyć jedną metodę użytkową, którą można ponownie wykorzystać w wielu miejscach, takich jak:

 function isNullOrEmpty(str){
    var returnValue = false;
    if (  !str
        || str == null
        || str === 'null'
        || str === ''
        || str === '{}'
        || str === 'undefined'
        || str.length === 0 ) {
        returnValue = true;
    }
    return returnValue;
  }
Anjum ....
źródło