用开箱即用的jQuery测试空字符串的最佳方法是什么?


228

用开箱即用的即没有插件测试空字符串的最佳方法是什么?我尝试了这个

但这至少是开箱即用的。使用内置的东西会很好。

我不想重复

if (a == null || a=='')

如果有的if (isempty(a)) 话,到处都是 。



Answers:


555
if (!a) {
  // is emtpy
}

要忽略字符串的空格:

if (!a.trim()) {
    // is empty or whitespace
}

如果您需要传统支持(IE8-)的trim(),使用$.trim填充工具


10
@CoffeeAddict空字符串在javascript中是伪造的,因此,如果a为“”或任何其他伪造的值(空,假,未定义,0,NaN),则表达式的计算结果为true 。
David Hellsing

21
如果您还需要仅使用空格来匹配字符串,则最好使用if (!$.trim(a))
Ilari Kajaste 2013年

3
以我的经验,在大多数情况下,您都希望运行此测试,并且还希望它包括对空格的测试。由于这是通常情况,OP应在其答案中包含@IlariKajaste的评论
Bane

17
接受的答案会失败,当你输入一个0,但是它会为工作1,2,3,4,等等
史蒂芬

5
是不是if (!a.trim())有点危险?如果a未定义或为空怎么办?
Timo

27

您提供的链接似乎在尝试与尝试避免重复的测试有所不同。

if (a == null || a=='')

测试字符串是空字符串还是null。您链接到的文章将测试字符串是否完全由空格组成(或为空)。

您描述的测试可以替换为:

if (!a)

因为在javascript中,空字符串和null都在布尔值上下文中均得出false。


if(!a)包含4个空格的字符串不会失败吗?`
-KNU

@KNU是,但是问题询问一个空字符串,并且包含空格的字符串不是空字符串。看看我写的关于询问的内容和链接的代码之间的区别的内容
SpoonMeiser

这个答案是错误的。它将'0'视为一个空字符串,不是。
约翰·亨克尔

@JohnHenckel:它将0像一个空字符串一样对待,但不是"0"。我以为那是你的意思?可以想象,这是在您知道它a是字符串还是null 的情况下使用的,但是可以。有一点要注意。
SpoonMeiser '16

25

根据David的回答,我个人想先检查给定的对象是否是字符串。否则,调用.trim()不存在的对象将引发异常:

function isEmpty(value) {
  return typeof value == 'string' && !value.trim() || typeof value == 'undefined' || value === null;
}

用法:

isEmpty(undefined); // true
isEmpty(null); // true
isEmpty(''); // true
isEmpty('foo'); // false
isEmpty(1); // false
isEmpty(0); // false

我从textarea中检查了<br /> <p> </ p>,它说不是应该的为空
kreamik

5

使用jQuery检查数据是否为空字符串(并忽略任何空格):

function isBlank( data ) {
    return ( $.trim(data).length == 0 );
}

5

要检查所有“空”,例如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

3
if(!my_string){ 
// stuff 
}

if(my_string !== "")

如果您想接受null但拒绝为空

编辑:哇,忘了你的条件是,如果它是空的


2

尝试在浏览器控制台或node.js副本中执行此操作。

var string = ' ';
string ? true : false;
//-> true

string = '';
string ? true : false;
//-> false

因此,一个简单的分支结构就足以满足测试要求。

if(string) {
    // string is not empty
}

1
最好说“ !! string”而不是“ string?true:false”,甚至只是“ string”。
アレックス

2

由于您还可以输入数字以及固定类型的字符串,因此答案实际上应该是:

function isBlank(value) {
  return $.trim(value);
}

不应该是这样吗 return !!$.trim(value);
wonsuc


-4
if((a.trim()=="")||(a=="")||(a==null))
{
    //empty condition
}
else
{
    //working condition
}

如果a nulla.trim()失败。这是检查事物的不好命令。而且,如果您更改顺序,您的答案将不会提供任何以前没有建议的内容。
Mike Scotty
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.