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


95

我需要检查变量是否为null或是否具有所有空格或只是空白(“”)。

我有以下内容,但无法正常工作:

var addr;
addr = "  ";

if (!addr) {
    // pull error 
}

如果我执行以下操作,它将起作用:

if (addr) {

}​

我需要的是类似C#方法的东西String.IsNullOrWhiteSpace(value)


3
你是真的意思has *any* empty spaces吗 还是你的意思is all empty spaces
Madbreaks'4

1
那未定义呢?
CodeToad

Answers:


135

一种非jQuery解决方案,更接近于模仿IsNullOrWhiteSpace,但仅检测null,空白或全空格:

function isEmptyOrSpaces(str){
    return str === null || str.match(/^ *$/) !== null;
}

...然后:

var addr = '  ';

if(isEmptyOrSpaces(addr)){
    // error 
}

*编辑* 请注意,op特别声明:

我需要检查var 是否为null或是否有任何空格或就此而言为空白

因此,虽然是,但“空白”不仅仅包含null,空格或空格,我的回答还旨在回答op的特定问题。这很重要,因为op可能不想捕获例如选项卡之类的东西。


62
空格还可以包括制表符,其他类型的空格等。也可以/^\s*$/用来捕获那些空格。
授予

2
@Grant我故意不这样做,因为op表示“我需要检查var是否为null或是否有任何空格,或者就此而言只是空白”
Madbreaks 2013年

4
使用test()而不是match()呢?返回str === null || (/ ^ * $ /)。test(str);
Mario Levrero 2014年

1
@MarioLevrero我喜欢它!test我记得还更快。
Madbreaks 2014年

9
@Madbreaks操作员说:“我需要的是这种C#方法:String.IsNullOrWhiteSpace”。该方法将制表符视为空白。
subsci 2014年

24
if (addr == null || addr.trim() === ''){
  //...
}

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


1
“如果您也想通过false,请使用!addr” -如果addr为零,则细分。
Madbreaks'Apr

19

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

这样做的好处是实际上从中删除了所有外部空格,addr而不仅仅是在执行检查时忽略它。

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


2
假设,当然,op 希望删除空白。:)
Madbreaks 2012年

1
如果addr用例如整数初始化,您的答案将返回假阳性。
Madbreaks'4

如果没有更多信息,我假设var如果不是null / undefined,则始终是字符串。
ThiefMaster 2012年

1
Op说“检查变量是否...”,他的示例显示该变量是一个字符串,但是我认为这只是一个演示此想法的示例。
Madbreaks'4

6
isEmptyOrSpaces(str){
    return !str || str.trim() === '';
}

是否需要重复现有答案?还是您对先前的答案做出了与众不同的改变?
Nico Haase

4

您可以创建自己的方法等效于

String.IsNullOrWhiteSpace(value)

function IsNullOrWhiteSpace( value) {

    if (value== null) return true;

    return value.replace(/\s/g, '').length == 0;
}

1
\s不仅仅是空间的匹配更
Madbreaks

4

旧问题,但是我认为它应该是一个更简单的答案。

您可以简单地执行以下操作:

var addr = "  ";

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

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

}

1
不是addr && addr.trim()吗?单曲&不适用于我,但可以&&
markv12

@ markv12已修复,谢谢
sandre89

3

检查空白时,c#方法使用Unicode标准。空白包括空格,制表符,回车符和许多其他非打印字符代码。因此,您最好使用:

function isNullOrWhiteSpace(str){
    return str == null || str.replace(/\s/g, '').length < 1;
}

Op明确指出目标是检查空格,而不是空格。
Madbreaks

5
Op说:“我需要的是这种C#方法:String.IsNullOrWhiteSpace(value)”。而且,如果仅检查空格,则不要将函数命名为isNullOrWhiteSpace,而是将其命名为IsNullOrEmtpy。
Joao Leme

C#方法用于检查字符串是否为null或一系列空格。Op想要“类似”的东西,但要专门检查空格。
Madbreaks 2013年


0

试试看

/**
  * Checks the string if undefined, null, not typeof string, empty or space(s)
  * @param {any} str string to be evaluated
  * @returns {boolean} the evaluated result
*/
function isStringNullOrWhiteSpace(str) {
    return str === undefined || str === null
                             || typeof str !== 'string'
                             || str.match(/^ *$/) !== null;
}

你可以这样使用

isStringNullOrWhiteSpace('Your String');


0
function isEmptyOrSpaces(str){
    return str === null || str.match(/^[\s\n\r]*$/) !== null;
}

0

您可以尝试以下方法:

do {
   var op = prompt("please input operatot \n you most select one of * - / *  ")
} while (typeof op == "object" || op == ""); 
// execute block of code when click on cancle or ok whthout input
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.