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


86

Я хочу спробувати виконати рядовий виклик, еквівалентний C # String.IsNullOrEmpty(string)у javascript. Я дивився в Інтернеті, припускаючи, що потрібно зробити простий дзвінок, але я не міг його знайти.

На даний момент я використовую if(string === "" || string === null)заяву, щоб охопити це, але я б скоріше використовував заздалегідь визначений метод (я продовжую отримувати деякі екземпляри, які чомусь проскакують)

Який найближчий виклик javascript (або jquery, якщо тоді він є), який буде рівним?



3
@ DanielA.White аргумент той самий, але для розробника C #, такого як я, це питання (із його назвою), швидше за все, буде знайдено
Daniele Armanasco

Відповіді:


211

Ви надмірно думаєте. Нульовий та порожній рядок - це неправдиві значення в JavaScript.

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

Фалсі:

  • помилковий
  • нуль
  • невизначений
  • Порожній рядок ''
  • Число 0
  • Число NaN

16
Дивно, що це набрало стільки голосів. Ця відповідь неправильна. Ви самі сказали, що фальшиве значення буде 0. Якщо користувач вводить 0 у поле, це не порожній рядок. Порожній рядок - це буквально "порожній" рядок.
KingOfHypocrites

3
Якщо користувач набирає 0, значенням буде "0", а не число 0. Таким чином, це все одно буде правдою, я думаю. Будь ласка, опублікуйте своє найкраще рішення, KingOfHypocrites?
Jonas T

2
KingOfHypocrites має рацію в тому, що рядок "0" дасть неправильний результат: "0" == false повертає true! "0" == false повертає true
Martien de Jong

2
Корисно. Хоча знайте свій набір даних. Якщо можливе введення "0" або "false", це рішення може не завжди працювати.
Невин,

12

Якщо з якихось причин ви хотіли протестувати лише nullі empty, можете:

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

Примітка. Це також не буде визначено як @Raynos, згаданий у коментарях.


можна оптимізувати доreturn (s == null || s === "")
Raynos

@Raynos - Чому == замість === щодо нуля? А що, якщо переданий об’єкт невизначений? undefined <> null, так?
Код Маверік

s == nullловить як nullі undefinedтакnull == undefined
Raynos

@Raynos - Гаразд, я зрозумів, але у випадку, якщо ви хочете знати невизначене або нульове значення, вам потрібно буде використовувати ===, правильно?
Код Маверік


5

Якщо ви знаєте, що stringце не число, це буде працювати:

if (!string) {
  .
  .
  .

Рядок "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, щоб перевірити, чи має значення null чи порожнє

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;
  }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.