提问



我看到了这个帖子,但是我没有看到一个特定于JavaScript的例子。在JavaScript中是否有一个简单的string.Empty,或者只是检查""的情况?

最佳参考


如果你只想检查是否有任何价值,你可以做


if (strValue) {
    //do something
}


如果你需要专门检查空字符串是否超过null,我会认为使用===运算符检查""是你最好的选择(这样你就知道它实际上是一个字符串你正在比较。[70]


if (strValue === "") {
    //...
}

其它参考1


为了检查字符串是否为空,null或未定义,我使用:


function isEmpty(str) {
    return (!str || 0 === str.length);
}


为了检查字符串是否为空,null或未定义,我使用:


function isBlank(str) {
    return (!str || /^\s*$/.test(str));
}


用于检查字符串是空白还是仅包含空格:


String.prototype.isEmpty = function() {
    return (this.length === 0 || !this.trim());
};

其它参考2


以上所有都很好,但这会更好。使用!!(不是)运算符。


if(!!str){
some code here;
}


或使用类型铸造:


if(Boolean(str)){
    codes here;
}


两者都执行相同的功能,将变量类型转换为boolean,其中str是变量。

返回null,undefined,0,000,"",falsefalse

返回字符串0和空格的true

其它参考3


如果你需要确保字符串不只是一堆空格(我假设这是用于表单验证),你需要对空格进行替换。


if(str.replace(/\s/g,"") == ""){
}

其它参考4


你可以得到str.Empty最接近的事情(str的前提条件是String)是:


if (!str.length) { ...

其它参考5


我用 :


function empty(e) {
  switch (e) {
    case "":
    case 0:
    case "0":
    case null:
    case false:
    case typeof this == "undefined":
      return true;
    default:
      return false;
  }
}

empty(null) // true
empty(0) // true
empty(7) // false
empty("") // true
empty((function() {
    return ""
  })) // false

其它参考6


var s; // undefined
var s = ""; // ""
s.length // 0


在JavaScript中没有任何代表空字符串的内容。对length(如果你知道var总是一个字符串)或""进行检查

其它参考7


尝试:


if (str && str.trim().length) {  
    //...
}

其它参考8


我不会太担心最强高效方法。使用你的意图最明确的。对我而言,通常是strVar == ""


编辑:根据Constantin的评论,如果strVar可能会有一些结果包含整数0值,那么这确实是那些意图澄清情况之一。

其它参考9


功能:


function Is_Empty_or_Undefined (MyVar){      return (

        (typeof MyVar== 'undefined')        //undefined
                    ||
        (MyVar == null)                     //null
                    ||
        (MyVar == false)  //!MyVariable     //false
                    ||
        (MyVar.length == 0)                 //empty
                    ||
        (MyVar == "")                       //empty
                    ||
        (MyVar.replace(/\s/g,"") == "")     //empty
                    ||
        (!/[^\s]/.test(MyVar))              //empty
                    ||
        (/^\s*$/.test(MyVar))                //empty
  );
}

其它参考10


你也可以使用正则表达式:


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


检查空白或填充空格的字符串。

其它参考11


很多答案,以及很多不同的可能性!


毫无疑问,快速和简单的实施赢家是: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;
    }
}




  1. 检查var a;是否存在

  2. 修剪出值中的false spaces,然后测试emptiness


    if ((a)&&(a.trim()!=''))
    {
      // if variable a is not empty do this 
    }
    


其它参考12


你可以使用lodash:
_.isEmpty(值)。 [72]


它涵盖了很多案例,如{}''nullundefined等。


但它始终返回Number Number类型的Javascript原始数据类型,如_.isEmpty(10)_.isEmpty(Number.MAX_VALUE)都返回true[73]

其它参考13


此外,如果您将填充空格的字符串视为空。
您可以使用此Regex进行测试:


!/\S/.test(string); // Returns true if blank.

其它参考14


我没有注意到一个考虑到字符串中空字符可能性的答案。例如,如果我们有一个空字符串:


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


要测试其null,可以执行以下操作:


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


它适用于空字符串,并且在空字符串上,并且可以访问所有字符串。此外,它可以扩展为包含其他JavaScript空或空白字符(即不间断空格,字节顺序标记,行/段分隔符等)。

其它参考15


我经常使用这样的东西,


if (!str.length) {
//do some thing
}

其它参考16


如果一个人不仅要检测空字符串还需要空白字符串,我将添加到Goral的答案:


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

function isBlank(s){
    return isEmpty(s.trim());    
}

其它参考17


我使用组合,最快的检查是第一次。


function isBlank(pString){
    if (!pString || pString.length == 0) {
        return true;
    }
    // checks for a non-white space character 
    // which I think [citation needed] is faster 
    // than removing all the whitespace and checking 
    // against an empty string
    return !/[^\s]+/.test(pString);
}

其它参考18


忽略空白字符串,您可以使用它来检查null,empty和undefined:


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

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

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


简洁,它适用于未定义的属性,虽然它不是最可读的。

其它参考19


所有这些答案都很好。


但我不能确定变量是一个字符串,不仅包含空格(这对我来说很重要),并且可以包含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的示例。[74]

其它参考20


我通常使用类似的东西:


if (str == "") {
     //Do Something
}
else {
     //Do Something Else
}

其它参考21


我做了一些研究,如果将非字符串和非空/空值传递给测试器函数会发生什么。众所周知,(0 ==)在javascript中是正确的,但由于0是一个值而不是空或null,您可能想要测试它。


以下两个函数仅对undefined,null,empty/whitespace值返回true,对其他所有值返回false,如数字,布尔值,对象,表达式等。


function IsNullOrEmpty(value)
{
    return (value == null || value === "");
}
function IsNullOrWhiteSpace(value)
{
    return (value == null || !/\S/.test(value));
}


存在更复杂的例子,但这些例子很简单并且给出了一致的结果。没有必要测试undefined,因为它包含在(value == null)检查中。您也可以通过将它们添加到String来模仿C#行为,如下所示:


String.IsNullOrEmpty = function (value) { ... }


您不希望将它放在Strings原型中,因为如果String类的实例为null,则会出错:


String.prototype.IsNullOrEmpty = function (value) { ... }
var myvar = null;
if (1 == 2) { myvar = "OK"; } // could be set
myvar.IsNullOrEmpty(); // throws error


我测试了以下值数组。如果有疑问,你可以循环测试你的功能。


// Helper items
var MyClass = function (b) { this.a = "Hello World!"; this.b = b; };
MyClass.prototype.hello = function () { if (this.b == null) { alert(this.a); } else { alert(this.b); } };
var z;
var arr = [
// 0: Explanation for printing, 1: actual value
    ['undefined', undefined],
    ['(var) z', z],
    ['null', null],
    ['empty', ''],
    ['space', ' '],
    ['tab', '\t'],
    ['newline', '\n'],
    ['carriage return', '\r'],
    ['"\\r\\n"', '\r\n'],
    ['"\\n\\r"', '\n\r'],
    ['" \\t \\n "', ' \t \n '],
    ['" txt \\t test \\n"', ' txt \t test \n'],
    ['"txt"', "txt"],
    ['"undefined"', 'undefined'],
    ['"null"', 'null'],
    ['"0"', '0'],
    ['"1"', '1'],
    ['"1.5"', '1.5'],
    ['"1,5"', '1,5'], // valid number in some locales, not in js
    ['comma', ','],
    ['dot', '.'],
    ['".5"', '.5'],
    ['0', 0],
    ['0.0', 0.0],
    ['1', 1],
    ['1.5', 1.5],
    ['NaN', NaN],
    ['/\S/', /\S/],
    ['true', true],
    ['false', false],
    ['function, returns true', function () { return true; } ],
    ['function, returns false', function () { return false; } ],
    ['function, returns null', function () { return null; } ],
    ['function, returns string', function () { return "test"; } ],
    ['function, returns undefined', function () { } ],
    ['MyClass', MyClass],
    ['new MyClass', new MyClass()],
    ['empty object', {}],
    ['non-empty object', { a: "a", match: "bogus", test: "bogus"}],
    ['object with toString: string', { a: "a", match: "bogus", test: "bogus", toString: function () { return "test"; } }],
    ['object with toString: null', { a: "a", match: "bogus", test: "bogus", toString: function () { return null; } }]
];

其它参考22


检查是否完全是一个空字符串:


if(val==="")...


检查它是否为空字符串或无值的逻辑等效项(null,undefined,0,NaN,false,...):


if(!val)...

其它参考23


没有isEmpty()方法,你必须检查类型和长度:


if (typeof test === 'string' && test.length === 0){
  ...


testundefinednull时,需要进行类型检查以避免运行时错误。

其它参考24


尝试这个


   str.value.length == 0

其它参考25


function tell()
{
var pass = document.getElementById('pasword').value;
var plen = pass.length;

now you can check if your string is empty as like 
if(plen==0)
{
         alert('empty');
}
else
{
   alert('you entered something');
}
}


<input type='text' id='pasword' />


这也是检查字段是否为空的通用方法。

其它参考26


不要假设你检查的变量是一个字符串。不要假设如果这个var有一个长度,那么它就是一个字符串。


问题是:仔细考虑您的应用必须做什么并且可以接受的内容。建立强大的东西。


如果你的方法/函数只应该处理一个非空字符串,那么测试参数是非空字符串并且不要做一些技巧。


作为一个例子,如果你在这里不小心遵循一些建议会爆炸。



var getLastChar = function (str) {
 if (str.length > 0)
   return str.charAt(str.length - 1)
}

getLastChar('hello')
=> "o"

getLastChar([0,1,2,3])
=> TypeError: Object [object Array] has no method 'charAt'



所以,我坚持下去



if (myVar === '')
  ...


其它参考27


同时我们可以使用一个函数来检查所有空白,例如 null,undefined,,,{},[[]]
所以我写了这个。


var isEmpty = function(data) {
    if(typeof(data) === 'object'){
        if(JSON.stringify(data) === '{}' || JSON.stringify(data) === '[]'){
            return true;
        }else if(!data){
            return true;
        }
        return false;
    }else if(typeof(data) === 'string'){
        if(!data.trim()){
            return true;
        }
        return false;
    }else if(typeof(data) === 'undefined'){
        return true;
    }else{
        return false;
    }
}


用例和结果。


console.log(isEmpty()); // true
console.log(isEmpty(null)); // true
console.log(isEmpty('')); // true
console.log(isEmpty('  ')); // true
console.log(isEmpty(undefined)); // true
console.log(isEmpty({})); // true
console.log(isEmpty([])); // true
console.log(isEmpty(0)); // false
console.log(isEmpty('Hey')); // false

其它参考28


您应该始终检查类型,因为JavaScript是一种鸭子类型的语言,因此您可能不知道数据在过程中何时以及如何更改。所以,这是更好的解决方案:


var str = "";
if (str === "") {
    //...
}