如何在 JavaScript 中检查变量是否为 null 或空字符串或全空格?

问题描述 投票:0回答:17

我需要检查变量是否为空或全部为空或只是空白(“”)。

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

var addr;
addr = "  ";

if (!addr) {
    // pull error 
}

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

if (addr) {

}​

我需要的是类似C#方法的东西

String.IsNullOrWhiteSpace(value)

javascript jquery
17个回答
214
投票

一种非 jQuery 解决方案,更接近地模仿

IsNullOrWhiteSpace
,但仅检测 null、空或全空格:

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

...然后:

var addr = '  ';

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

* 编辑* 请注意,op 特别指出:

我需要检查 var 是否为空或有任何空格,或者只是空白

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


71
投票
if (addr == null || addr.trim() === ''){
  //...
}

null
比较也会捕捉到
undefined
。如果您也希望
false
通过,请使用
!addr
。为了向后兼容浏览器,请将
addr.trim()
替换为
$.trim(addr)


22
投票

您可以使用

if(addr && (addr = $.trim(addr)))

这样做的优点是实际上从

addr
中删除任何外部空格,而不是在执行检查时忽略它。

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


20
投票

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

你可以简单地做:

var addr = "  ";

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

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

}

8
投票

上述内容的简化版本:(来自此处:https://stackoverflow.com/a/32800728/47226

function isNullOrWhitespace( input ) {
  return !input || !input.trim();
}

5
投票

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

String.IsNullOrWhiteSpace(value)

function IsNullOrWhiteSpace( value) {

    if (value== null) return true;

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

4
投票

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

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

4
投票
isEmptyOrSpaces(str){
    return !str || str.trim() === '';
}

4
投票

也许这是最简单的方法

if (!addr?.trim()){
  //error
}

3
投票

我通常这样做:

!value?.toString().trim()

如果需要,您可以将其包装在函数中

function isNullOrWhiteSpace(value) {
  return !value?.toString().trim()
}

console.log(isNullOrWhiteSpace(''))
console.log(isNullOrWhiteSpace(' '))
console.log(isNullOrWhiteSpace(undefined))
console.log(isNullOrWhiteSpace(null))
console.log(isNullOrWhiteSpace('0'))
console.log(isNullOrWhiteSpace(0))

如果您只想检查字符串,则可以轻松调整

if (typeof(value) === 'number') throw new Error('Invalid input')

1
投票

我只使用这个,并且大多数时候这对我有用。 它首先修剪空白,然后检查长度。

 if(value.trim().length === 0)
{
   //code for empty value
}

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
投票
isEmptyOrSpaces(str){
    return str === null || str.trim().length>0;
}

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

0
投票

基于 Madbreaks 的回答,我也想解释

undefined

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

开玩笑测试:

it('works for undefined', () => {
    expect(isNullOrWhitespace(undefined)).toEqual(true);
});

it('works for null', () => {
    expect(isNullOrWhitespace(null)).toEqual(true);
});

it('works for empty', () => {
    expect(isNullOrWhitespace('')).toEqual(true);
});

it('works for whitespace', () => {
    expect(isNullOrWhitespace(' ')).toEqual(true);
    
    // Tab
    expect(isNullOrWhitespace(' ')).toEqual(true);
});

0
投票

我根据 MadBreak 的答案编写了以下片段。就我而言,在某些情况下传入非字符串对象会引发异常。以下函数在调用之前检查

str.match
函数是否存在。

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

-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
© www.soinside.com 2019 - 2024. All rights reserved.