Как проверить пустую / неопределенную / пустую строку в JavaScript? - PullRequest
2454 голосов
/ 30 сентября 2008

Я видел этот поток , но я не видел конкретного примера JavaScript. Есть ли простой string.Empty доступный в JavaScript, или это просто проверка ""?

Ответы [ 41 ]

26 голосов
/ 30 сентября 2008

Я бы не стал слишком беспокоиться о самом эффективном методе. Используйте то, что наиболее ясно для вашего намерения. Для меня это обычно strVar == "".

РЕДАКТИРОВАТЬ: за комментарий от Константин , если strVar может каким-то образом получить целое значение 0, то это действительно будет одна из тех ситуаций, проясняющих намерения.

19 голосов
/ 31 мая 2010

Вы также можете использовать регулярные выражения:

if((/^\s*$/).test(str)) { }

Проверяет наличие пустых строк или пробелов.

17 голосов
/ 31 марта 2016

Множество ответов и много разных возможностей!

Без сомнения, для быстрой и простой реализации победитель: if (!str.length) {...}

Однако доступно много других примеров. Лучший функциональный метод для этого, я бы предложил:

function empty(str)
{
    if (typeof str == 'undefined' || !str || str.length === 0 || str === "" || !/[^\s]/.test(str) || /^\s*$/.test(str) || str.replace(/\s/g,"") === "")
    {
        return true;
    }
    else
    {
        return false;
    }
}

Я немного излишне знаю.

16 голосов
/ 24 февраля 2015
  1. проверить, что var a; существует
  2. вырежьте false spaces в значении, затем проверьте на emptiness

    if ((a)&&(a.trim()!=''))
    {
      // if variable a is not empty do this 
    }
    
14 голосов
/ 15 мая 2013

Кроме того, если вы считаете строку, заполненную пробелом, пустой. Вы можете проверить это с помощью этого регулярного выражения:

!/\S/.test(string); // Returns true if blank.
11 голосов
/ 09 августа 2013

Я обычно использую что-то вроде этого,

if (!str.length) {
//do some thing
}
9 голосов
/ 31 июля 2012

Я не заметил ответа, который учитывает возможность появления нулевых символов в строке. Например, если у нас есть нулевая строка символов:

var y = "\0"; // an empty string, but has a null character
(y === "") // false, testing against an empty string does not work
(y.length === 0) // false
(y) // true, this is also not expected
(y.match(/^[\s]*$/)) // false, again not wanted

Чтобы проверить его недействительность, можно сделать что-то вроде этого:

String.prototype.isNull = function(){ 
  return Boolean(this.match(/^[\0]*$/)); 
}
...
"\0".isNull() // true

Он работает с пустой строкой и пустой строкой и доступен для всех строк. Кроме того, его можно расширить, чтобы он содержал другие пустые или пробельные символы JavaScript (то есть неразрывный пробел, метку порядка байтов, разделитель строк / абзацев и т.

9 голосов
/ 01 октября 2014

Если нужно обнаружить не только пустые, но и пустые строки, я добавлю к ответу Горала:

function isEmpty(s){
    return !s.length;    
}

function isBlank(s){
    return isEmpty(s.trim());    
}
8 голосов
/ 08 мая 2013

Все эти ответы хороши.

Но я не могу быть уверен, что переменная является строкой, не содержит только пробелов (это важно для меня) и может содержать '0' (строка).

Моя версия:

function empty(str){
    return !str || !/[^\s]+/.test(str);
}

empty(null); // true
empty(0); // true
empty(7); // false
empty(""); // true
empty("0"); // false
empty("  "); // true

Образец jsfiddle .

7 голосов
/ 19 июля 2012

Игнорируя строки пробелов, вы можете использовать это для проверки на нулевое, пустое и неопределенное:

var obj = {};
(!!obj.str) //returns false

obj.str = "";
(!!obj.str) //returns false

obj.str = null;
(!!obj.str) //returns false

Краткий и работает для неопределенных свойств, хотя и не самый читаемый.

...