2011-04-21 132 views
66

我想尝试在JavaScript中进行等效于C#String.IsNullOrEmpty(string)的字符串调用。我在网上看起来假设有一个简单的电话打来,但我找不到一个。C#String.IsNullOrEmpty Javascript等效

现在我使用的是if(string === "" || string === null)语句来覆盖它,但我宁愿使用预定义的方法(我一直得到某些情况下,由于某种原因溜走)

什么是最接近的JavaScript(或jQuery的,如果那么有一个)的电话会是平等的?

+0

可能的重复[什么是最好的方式来测试一个空字符串jquery-out-the-bo X?(http://stackoverflow.com/questions/1812245/what-is-the-best-way-to-test-for-an-empty-string-with-jquery-out-of-the-box) – 2011-04-21 16:28:41

+3

@ DanielA.White参数是一样的,但对于像我这样的C#开发人员来说,这个问题(带有它的标题)更可能被发现 – 2013-09-07 15:58:00

回答

155

你过度了。空字符串和空字符串都是JavaScript中的错误值。

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

Falsey:

  • 不确定
  • 空字符串 ''
  • 数0
  • 数为NaN
+10

令人惊讶的是,得到了这么多赞成票。这个答案是不正确的。你说自己一个虚假的值将是0.如果用户在字段中键入0,这不是一个空字符串。空字符串实际上是一个“空”字符串。 – KingOfHypocrites 2015-03-19 19:28:08

+2

如果用户输入0,值将是“0”字符串不是数字0.所以它仍然是真的我猜。请张贴您的最佳解决方案,KingOfHypocrites? – 2015-03-27 06:06:33

+2

KingOfHypocrites是正确的,因为字符串“0”会给出不正确的结果: “0”== false返回true !“0”== false返回true – 2016-05-23 12:02:27

5

如果你知道string不是数字,这将工作:

if (!string) { 
    . 
    . 
    . 
+0

字符串“0”是falsey,所以你不必检查if该字符串是数字。 – JoJo 2011-04-21 17:49:36

+0

我的意思是“0”是truthy。 – JoJo 2011-04-21 22:32:14

+1

是的,字符串“0”是truthy,但如果变量'string'实际上不是一个字符串,而是* Number *零,那么'string'将是falsey。如果我们知道'string'是一个实际的字符串或null,它就不会成为问题。 – awm 2011-04-22 01:10:40

11

如果出于某种原因,你想测试仅nullempty,你可以做:

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

注意:这也会在评论中提到未定义的@Raynos。

+0

可以优化为'return(s == null || s ===“”)' – Raynos 2011-04-21 17:09:42

+0

@Raynos - 为什么==而不是===相对于null?如果传入的对象是未定义的呢? undefined <> null,对吗? – 2011-04-21 17:12:56

+0

's == null'因为'null == undefined'而同时捕获'null'和'undefined' – Raynos 2011-04-21 17:23:54

3

你可以做

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

这将检查string未定义,空,空字符串。

1

要清楚,if(!theString){//...}其中theString是一个未声明的变量将抛出一个未定义的错误,不会发现它是真实的。另一方面,如果您有:if(!window.theString){//...}var theString; if(!theString){//...}它将按预期工作。在变量可能不被声明的情况下(相对于属性或简单地未设置),您需要使用:if(typeof theString === 'undefined'){//...}

我的首选是创建一个包装它的原型函数。

1

由于被标记为正确的答案包含一个小错误,因此我最好尝试提出解决方案。我有两个选择,一个接受一个字符串,另一个接受一个字符串或一个数字,因为我认为很多人在JavaScript中混合字符串和数字。

步骤: - 如果对象为null,则为空或空字符串。 - 如果类型不是字符串(或数字),则其字符串值为空或空。注意:我们也可以在此处引发异常,具体取决于偏好。 - 如果修剪后的字符串值的长度小于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; 
    }