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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查字符串是空还是空的最简单方法相关的知识,希望对你有一定的参考价值。

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

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)吗?我总是可以为它定义一个函数(就像我一样),但我想知道是否有一些我缺少的语言。

答案

对:

passwordNotEmpty = not not password

或更短:

passwordNotEmpty = !!password
另一答案

而不是接受的答案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
另一答案

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

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

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

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

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

另一答案

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

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

您的功能可以实现为:

eitherStringEmpty = (email, password) ->
  not (email?.length and password?.length)
另一答案

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

test1 = not (email and password)

它为什么有效?

'0'       // true
'123abc'  // true
''        // false
null      // false
undefined // false
另一答案
unless email? and email
  console.log 'email is undefined, null or ""'

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

另一答案

您可以使用coffeescript或=操作

s = ''    
s or= null
另一答案

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

 if typeof email isnt "string"
另一答案

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

基本上你只是这样做是javascript

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

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

在coffeescript中:

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

希望这有助于某人:)

另一答案

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

例如

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

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

CoffeeScript的:

 car?.color

转换为javascript:

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

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

另一答案

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

result = !email or !password

你可以在这个online Coffeescript console上亲自尝试一下

以上是关于检查字符串是空还是空的最简单方法的主要内容,如果未能解决你的问题,请参考以下文章

如何检查datareader是空还是空

如何检查扫描字符串的第一个字符,即使它是空的?

检查PHP数组是不是不为空的最简单方法[关闭]

检查变量是不是为空字符串或空字符串的更好方法?

清空数组后,代码没有读取到它是空的

php PHP - 检查目录是空的