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?



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

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.


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) {
  .
  .
  .

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.


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.


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

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 :(
}

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;
  }
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.