如何检查变量是否为null或空字符串或JavaScript中的所有空格?

Nat*_*Pet 77 javascript jquery

我需要检查变量是否为null或是否所有空格或只是空白("").

我有以下,但它不起作用:

var addr;
addr = "  ";

if (!addr) {
    // pull error 
}
Run Code Online (Sandbox Code Playgroud)

如果我执行以下操作,它可以工作:

if (addr) {

}?
Run Code Online (Sandbox Code Playgroud)

我需要的是像C#方法String.IsNullOrWhiteSpace(value).

Mad*_*aks 116

一种非jQuery解决方案,它更接近于模仿IsNullOrWhiteSpace,但仅检测null,empty或all-spaces:

function isEmptyOrSpaces(str){
    return str === null || str.match(/^ *$/) !== null;
}
Run Code Online (Sandbox Code Playgroud)

...然后:

var addr = '  ';

if(isEmptyOrSpaces(addr)){
    // error 
}
Run Code Online (Sandbox Code Playgroud)

*编辑* 请注意,op特别声明"我需要检查var是否为null或者是否有空格或者只是空白".所以,虽然是的,"空格"包含的不仅仅是null,空格还是空白,我的答案是为了回答op的具体问题.这很重要,因为op可能不想捕获像标签这样的东西.

  • 空格还可以包括制表符,其他类型的空格等.使用`/ ^\s*$ /`来捕捉它们. (47认同)
  • C#方法的语义需要Grant的细节. (7认同)
  • @Madbreaks op声明"我需要的是像这样的C#方法:String.IsNullOrWhiteSpace".该方法将制表符视为空格. (7认同)
  • @Grant 我故意没有这样做,因为 op 说 _“我需要检查 var 是否为空或是否有任何空格,或者就此而言只是空白”_。 (3认同)
  • 使用test()而不是match()怎么样?return str === null || (/ ^*$ /).test(str); (2认同)

Thi*_*ter 17

您可以使用 if(addr && (addr = $.trim(addr)))

这样做的好处是可以实际删除任何外部空格,addr而不是在执行检查时忽略它.

参考:http://api.jquery.com/jQuery.trim/

  • 当然,假设op*想*删除空格.:) (2认同)

Ric*_*asi 14

if (addr == null || addr.trim() === ''){
  //...
}
Run Code Online (Sandbox Code Playgroud)

一个null比较也将赶上undefined.如果你想false通过,请使用!addr.为了向后浏览器兼容性掉addr.trim()$.trim(addr).

  • 为什么第一个“==”和第二个匹配“===”? (2认同)
  • 使用“addr == null”也将匹配未定义。如果您使用“addr === null”,它只会匹配 null。对第二个匹配使用 === 会强制仅匹配空字符串。 (2认同)

san*_*e89 11

老问题,但我认为它值得一个更简单的答案。

你可以简单地做:

var addr = "  ";

if (addr && addr.trim()) {

    console.log("I'm not null, nor undefined, nor empty string, nor string composed of whitespace only.");

}
Run Code Online (Sandbox Code Playgroud)


She*_*zad 5

您可以创建自己的方法相当于

String.IsNullOrWhiteSpace(value)

function IsNullOrWhiteSpace( value) {

    if (value== null) return true;

    return value.replace(/\s/g, '').length == 0;
}
Run Code Online (Sandbox Code Playgroud)


Aar*_*man 5

上面的简化版本:(来自这里:https : //stackoverflow.com/a/32800728/47226

function isNullOrWhitespace( input ) {
  return !input || !input.trim();
}
Run Code Online (Sandbox Code Playgroud)

  • `console.log(isNullOrWhitespace(0));` --> `true` (3认同)

Ali*_*Ali 5

isEmptyOrSpaces(str){
    return !str || str.trim() === '';
}
Run Code Online (Sandbox Code Playgroud)

  • 有没有必要复制现有的答案?或者您是否对先前的答案进行了任何更改以产生相关差异? (2认同)