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/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM