C # String.IsNullOrEmpty эквивалент Javascript

86

Я хочу попытаться выполнить строковый вызов, эквивалентный C # String.IsNullOrEmpty(string)в javascript. Я искал в Интернете, предполагая, что нужно было сделать простой звонок, но не смог его найти.

На данный момент я использую if(string === "" || string === null)оператор, чтобы покрыть это, но я бы предпочел использовать предопределенный метод (я продолжаю получать некоторые экземпляры, которые по какой-то причине проскальзывают)

Каков ближайший вызов javascript (или jquery, если он есть), который был бы равен?

Кубок Стэнли Фил
источник
3
@ DanielA.White аргумент тот же, но для такого разработчика C #, как я, этот вопрос (с его названием), скорее всего, будет найден
Даниэле Арманаско

Ответы:

211

Вы слишком много думаете. В JavaScript и нулевая, и пустая строка являются ложными значениями.

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

Фальси:

  • ложный
  • значение NULL
  • неопределенный
  • Пустая строка ''
  • Число 0
  • Число NaN
JoJo
источник
16
Удивительно, что это набрало столько голосов. Это неверный ответ. Вы сами сказали, что ложным значением будет 0. Если пользователь вводит 0 в поле, это не пустая строка. Пустая строка - это буквально «пустая» строка.
KingOfHypocrites
3
Если пользователь вводит 0, значением будет строка «0», а не число 0. Так что, я думаю, это все равно будет правдой. Пожалуйста, разместите свое лучшее решение, KingOfHypocrites?
Jonas T
2
KingOfHypocrites прав в том, что строка «0» даст неверный результат: «0» == false вернет истину! «0» == false вернет истину
Мартьен де Йонг
2
Полезно. Но знайте свой набор данных. Если возможны «0» или «ложь», это решение может не всегда работать.
Невин
12

Если по какой-либо причине вы хотите только протестировать nullи emptyвы можете:

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

Примечание: это также будет отлавливать undefined, поскольку @Raynos упоминается в комментариях.

Code Maverick
источник
можно оптимизировать доreturn (s == null || s === "")
Raynos
@Raynos - Почему == вместо === по отношению к нулю? А что, если переданный объект не определен? undefined <> null, верно?
Code Maverick
s == nullловит оба nullи undefinedс тех порnull == undefined
Raynos
@Raynos - Хорошо, я понял, но в случае, если вы действительно хотите знать undefined или null, вам нужно будет использовать ===, правильно?
Code Maverick
5

Если вы знаете, что stringэто не числовое значение, это сработает:

if (!string) {
  .
  .
  .
awm
источник
Строка «0» ложна, поэтому вам не нужно проверять, является ли строка числовой.
JoJo
1
Да, строка «0» является truthy, но если переменная stringв действительности не является строкой , но номер ноль, то stringбудет falsey. Не будет проблем, если мы знаем, что stringэто либо фактическая строка, либо ноль.
awm
3

ты можешь просто сделать

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

Это проверит stringналичие неопределенной, нулевой и пустой строки.

Разбитое стекло
источник
1

Для ясности: if(!theString){//...}если theString - необъявленная переменная, это вызовет неопределенную ошибку, а не истину. С другой стороны, если у вас есть: if(!window.theString){//...}или var theString; if(!theString){//...}он будет работать должным образом. В случае, когда переменная не может быть объявлена ​​(вместо того, чтобы быть свойством или просто не задана), вам необходимо использовать:if(typeof theString === 'undefined'){//...}

Я предпочитаю создать функцию-прототип, которая завершит ее за вас.

Крейг
источник
1

Поскольку ответ, помеченный как правильный, содержит небольшую ошибку, вот моя лучшая попытка найти решение. У меня есть два варианта: один принимает строку, другой - строку или число, поскольку я предполагаю, что многие люди смешивают строки и числа в javascript.

Шаги: -Если объект равен нулю, это пустая или пустая строка. -Если тип не является строкой (или числом), то строковое значение равно нулю или пусто. ПРИМЕЧАНИЕ: мы также можем выбросить исключение, в зависимости от предпочтений. -Если обрезанное строковое значение имеет длину меньше 1, оно является нулевым или пустым.

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

вы можете сказать это по логике

Допустим, у вас есть имя переменной strVal, чтобы проверить, является ли оно пустым или пустым.

if (typeof (strVal) == 'string' && strVal.length > 0) 
{
// is has a value and it is not null  :)
}
else
{
//it is null or empty :(
}
Ахмад Хиндаш
источник
1

Вы можете создать один служебный метод, который можно будет повторно использовать во многих местах, например:

 function isNullOrEmpty(str){
    var returnValue = false;
    if (  !str
        || str == null
        || str === 'null'
        || str === ''
        || str === '{}'
        || str === 'undefined'
        || str.length === 0 ) {
        returnValue = true;
    }
    return returnValue;
  }
Анджум ....
источник