133

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

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

var addr;
addr = "  ";

if (!addr) {
    // pull error 
}

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

if (addr) {

}​

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

4

12 回答 12

180

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

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

...然后:

var addr = '  ';

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

* 编辑 * 请注意 op 明确指出:

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

因此,虽然是的,但“空白”不仅仅包含 null、空格或空白,我的答案旨在回答 op 的具体问题。这很重要,因为 op 可能不想捕获诸如标签之类的东西。

于 2012-04-19T16:43:40.657 回答
41
if (addr == null || addr.trim() === ''){
  //...
}

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

于 2012-04-19T16:21:44.847 回答
22

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

这具有实际删除任何外部空格的优点,addr而不是在执行检查时忽略它。

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

于 2012-04-19T16:19:49.543 回答
12

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

你可以简单地做:

var addr = "  ";

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

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

}
于 2020-01-12T13:54:18.160 回答
7

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

function isNullOrWhitespace( input ) {
  return !input || !input.trim();
}
于 2018-05-24T14:10:14.597 回答
5

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

String.IsNullOrWhiteSpace(value)

function IsNullOrWhiteSpace( value) {

    if (value== null) return true;

    return value.replace(/\s/g, '').length == 0;
}
于 2012-04-19T16:30:48.740 回答
5
isEmptyOrSpaces(str){
    return !str || str.trim() === '';
}
于 2019-05-17T15:14:18.213 回答
4

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

function isNullOrWhiteSpace(str){
    return str == null || str.replace(/\s/g, '').length < 1;
}
于 2013-06-29T00:03:08.413 回答
1
isEmptyOrSpaces(str){
    return str === null || str.trim().length>0;
}
于 2019-01-08T08:35:06.660 回答
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');
于 2018-11-22T08:19:52.783 回答
0
function isEmptyOrSpaces(str){
    return str === null || str.match(/^[\s\n\r]*$/) !== null;
}
于 2019-05-05T14:34:08.473 回答
-2

你可以试试这个:

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
于 2019-10-10T17:48:38.887 回答