javascript:如何判断一个字符串是empty

问:如何判断一个字符串str是empty?

答:1)str===“”(不能筛选出空格符及制表符)

  2)str.length===0(不能筛选出空格符及制表符), .str.trim().length===0(可以筛选出空格符及制表符)

  3)  !str(不能筛选出空格符及制表符,0和false)

综上所述,如果要判断是空字符串,包括空格符及制表符,要用上str===""||str.trim().length===0,如果要加上空值判断,就是前一篇的null,undefined的判断,str===""||str.trim().length===0||str==null

下面看具体解释:

1.先举个例子

   var addr = "";
    var billAddr = "  ";//制表符
    var homeAddr = " ";//空格符
    var numberZero = 0;
    var boolFalse = false;

    console.log("addr: " + addr);//返回空
    console.log("billAddr: " + billAddr);//返回空
    console.log("homeAddr: " + homeAddr);//返回空
    console.log("numberZero: " + numberZero);//返回0
    console.log("boolFalse: " + boolFalse);//返回false


    console.log("addr: " + typeof addr);//返回string
    console.log("billAddr: " + typeof billAddr);//返回string
    console.log("homeAddr: " + typeof homeAddr);//返回string
    console.log("numberZero: " + typeof numberZero);//返回number
    console.log("boolFalse: " + typeof boolFalse);//返回boolean

    console.log("空string值是null值吗?用==判断,答案为:" + ("" == null));
    console.log("空string值是null值吗?用===判断,答案为:" + ("" === null));
    console.log("空string值是undefined值吗?用==判断,答案为:" + ("" == undefined));
    console.log("空string值是undefined值吗?用===判断,答案为:" + ("" === undefined));
    console.log("空string值是0值吗?用==判断,答案为:" + ("" == 0));
    console.log("空string值是0值吗?用===判断,答案为:" + ("" === 0));
    console.log("空string值是false值吗?用==判断,答案为:" + ("" == false));
    console.log("空string值是false值吗?用===判断,答案为:" + ("" === false));

运行结果如下:

 

 

 由上面的测试结果,我们发现如果用==来判断,当变量为0或false,判断结果也是为真

所以,一定要用===来判断,不要用==来判断

 

方法一,采用===来判断,但这边好像有个问题,空格符跟制表符显示的是不为空?

//写法一,单纯用===来判断(为啥addr为真,billAddr制表符和homeAddr空格符这两个为假呢?)
    console.log("写法一,单纯用===来判断");
    if (addr === "") {
        console.log("addr无值,为empty");
    } else {
        console.log("addr有值,不为empty,为" + addr);
    }
    if (billAddr === "") {
        console.log("billAddr无值,为empty");
    } else {
        console.log("billAddr有值,不为empty,为" + billAddr)
    }
    if (homeAddr === "") {
        console.log("homeAddr无值,为empty");
    } else {
        console.log("homeAddr有值,不为empty,为" + homeAddr);
    }
    if (numberZero === "") {
        console.log("numberZero无值,为empty");
    } else {
        console.log("numberZero有值,不为empty,为" + numberZero)
    }
    if (boolFalse === "") {
        console.log("boolFalse无值,为empty");
    } else {
        console.log("boolFalse有值,不为empty,为" + boolFalse);
    }

测试结果如下:

 

 

 方法二,用.length来判断

//写法二,单纯用.length来判断(注意addr,billAddr,homeAddr的长度都不一样)
    console.log("写法二,单纯用.length来判断");
    if (addr.length === 0) {
        console.log("addr没值,长度为" + addr.length);
    } else {
        console.log("addr有值,长度为" + addr.length);
    }
    if (billAddr.length === 0) {
        console.log("billAddr没值,长度为0");
    } else {
        console.log("billAddr有值,制表符长度为" + billAddr.length)
    }
    if (homeAddr.length === 0) {
        console.log("homeAddr没值,长度为0");
    } else {
        console.log("homeAddr有值,空格长度为" + homeAddr.length);
    }
    if (numberZero.length === 0) {
        console.log("numberZero没值,长度为0");
    } else {
        console.log("numberZero有值,制表符长度为" + numberZero.length)
    }
    if (boolFalse.length === 0) {
        console.log("boolFalse没值,长度为0");
    } else {
        console.log("boolFalse有值,空格长度为" + boolFalse.length);
    }

测试结果如下:

 

 

 针对上面的,可以用.trim()来解决,如下:

 //写法三,用.trim().length来判断(符合预期,trim后长度都为0)
    console.log("写法三,用.trim().length来判断");
    if (addr.trim().length > 0) {
        console.log("addr有值,不为empty");
    } else {
        console.log("trim后长度为:" + addr.trim().length);
        console.log("addr没值,empty");
    }
    if (billAddr.trim().length > 0) {
        console.log("billAddr有值,不为empty");
    } else {
        console.log("trim后长度为:" + billAddr.trim().length);
        console.log("billAddr没值,empty")
    }
    if (homeAddr.trim().length > 0) {
        console.log("homeAddr有值,不为empty");
    } else {
        console.log("trim后长度为:" + homeAddr.trim().length);
        console.log("homeAddr没值,empty");
    }

测试结果如下:

 

 

 方法四,把变量转化为boolean值进行判断?(注意billAddr和homeAddr也显示为有值)

   //写法四,用!来判断(问:这种来判断string很奇怪吧?结果也是!addr为真,!billAddr和!homeAddr为假)
    //答:这种判断不奇怪,假设addr为变量,如果变量addr的值是null,undefined,0,000,"",false,返回的是false,!addr返回的就是真,!!addr返回的就是假
    console.log("写法四,单纯用!来判断");
    if (!addr) {
        console.log("addr没值,为empty");
    } else {
        console.log("addr有值,不为empty");
    }
    if (!billAddr) {
        console.log("billAddr没值,为empty");
    } else {
        console.log("billAddr有值,不为empty")
    }
    if (!homeAddr) {
        console.log("homeAddr没值,为empty");
    } else {
        console.log("homeAddr有值,不为empty");
    }
    if (!numberZero) {
        console.log("numberZero没值,为empty");
    } else {
        console.log("numberZero有值,不为empty")
    }
    if (!boolFalse) {
        console.log("boolFalse没值,为empty");
    } else {
        console.log("boolFalse有值,不为empty");
    }

测试结果如下:

 

 

ref:https://www.delftstack.com/howto/javascript/javascript-check-if-string-is-empty/

 

posted @ 2022-01-06 11:36  katesharing  阅读(1512)  评论(0编辑  收藏  举报