检查字符串是空还是空的最简单方法

时间:2011-11-14 20:46:35

标签: coffeescript

我有这个代码检查空字符串或空字符串。它正在测试中。

eitherStringEmpty= (email, password) ->
  emailEmpty = not email? or email is ''
  passwordEmpty = not password? or password is ''
  eitherEmpty = emailEmpty || passwordEmpty         

test1 = eitherStringEmpty "A", "B" # expect false
test2 = eitherStringEmpty "", "b" # expect true
test3 = eitherStringEmpty "", "" # expect true
alert "test1: #{test1} test2: #{test2} test3: #{test3}"

我想知道的是,如果有比not email? or email is ''更好的方法。我可以通过一次调用在CoffeeScript中执行相当于C#string.IsNullOrEmpty(arg)的操作吗?我总是可以为它定义一个函数(就像我一样),但我想知道是否有一些我缺少的语言。

11 个答案:

答案 0 :(得分:114)

烨:

passwordNotEmpty = not not password

或更短:

passwordNotEmpty = !!password

答案 1 :(得分:37)

它并非完全等效,但如果email?.length为非null并且具有非零email属性,.length将只是真正的。如果你not这个值,结果应该按照你想要的字符串和数组行为。

如果emailnull.length,则email?.length将评估为null,这是假的。如果它确实有.length那么这个值将计算为它的长度,如果它是空的,它将是假的。

您的功能可以实现为:

eitherStringEmpty = (email, password) ->
  not (email?.length and password?.length)

答案 2 :(得分:14)

这是“真实性”派上用场的案例。您甚至不需要为此定义函数:

test1 = not (email and password)

为什么会这样?

'0'       // true
'123abc'  // true
''        // false
null      // false
undefined // false

答案 3 :(得分:4)

unless email? and email
  console.log 'email is undefined, null or ""'

首先检查电子邮件是否未定义且使用存在运算符不为null,如果您知道它存在,and email部分将仅在电子邮件字符串为空时返回false。

答案 4 :(得分:2)

您可以使用coffeescript或= operation

s = ''    
s or= null

答案 5 :(得分:1)

如果您需要检查内容是否为字符串,而不是null而不是数组,请使用简单的比较类型:

 if typeof email isnt "string"

答案 6 :(得分:1)

这是一个jsfiddle,展示了一种非常简单的方法。

基本上你只是这样做是javascript:

var email="oranste";
var password="i";

if(!(email && password)){
    alert("One or both not set");        
}
else{
    alert("Both set");   
}

在coffescript中:

email = "oranste"
password = "i"
unless email and password
  alert "One or both not set"
else
  alert "Both set"

希望这有助于某人:)

答案 7 :(得分:1)

我认为问号是在事物存在时调用函数的最简单方法。

例如

car = {
  tires: 4,
  color: 'blue' 
}

你想获得颜色,但只有汽车存在...

CoffeeScript的:

 car?.color

转换为javascript:

if (car != null) {
  car.color;
}

它被称为存在运算符http://coffeescript.org/documentation/docs/grammar.html#section-63

答案 8 :(得分:0)

基于this answer关于检查变量是否具有truthy值,您只需要一行:

result = !email or !password

&安培;你可以在online Coffeescript console

上亲自尝试一下

答案 9 :(得分:0)

您可以使用

代替接受的答案passwordNotEmpty = !!password
passwordNotEmpty = if password then true else false

它给出了相同的结果(仅在语法上有所区别)。

第一列是值,第二列是if value的结果:

0 - false
5 - true
'string' - true
'' - false
[1, 2, 3] - true
[] - true
true - true
false - false
null - false
undefined - false

答案 10 :(得分:0)

我很确定@thejh的答案足以检查空字符串BUT, 我想我们经常需要检查“它是否存在?”然后我们需要检查'它是空的吗?包括字符串,数组和对象'

这是CoffeeScript执行此操作的缩短方式。

tmp? and !!tmp and !!Object.keys(tmp).length

如果我们保留此问题顺序,则会通过此订单进行检查   它存在吗?   2.不是空字符串?   3.不是空物?

所以即使在不存在的情况下,所有变量都没有任何问题。