C # String. เทียบเท่า Javascript ที่ว่างเปล่า


86

ฉันต้องการลองทำการโทรแบบสตริงที่เทียบเท่ากับ C # String.IsNullOrEmpty(string)ในจาวาสคริปต์ ฉันดูออนไลน์โดยสมมติว่ามีสายเรียกเข้าง่ายๆ แต่หาไม่พบ

ตอนนี้ฉันกำลังใช้if(string === "" || string === null)คำสั่งเพื่อปกปิดมัน แต่ฉันอยากจะใช้วิธีที่กำหนดไว้ล่วงหน้า (ฉันได้รับอินสแตนซ์บางอย่างที่ลื่นไหลด้วยเหตุผลบางประการ)

จาวาสคริปต์ที่ใกล้เคียงที่สุดคืออะไร (หรือ jquery ถ้ามี) เรียกว่าจะเท่ากัน?



3
@ DanielA ข้อโต้แย้งเหมือนกัน แต่สำหรับนักพัฒนา C # อย่างฉันคำถามนี้ (พร้อมชื่อ) มีแนวโน้มที่จะพบมากกว่า
Daniele Armanasco

คำตอบ:


212

คุณคิดมากเกินไป สตริงว่างและค่าว่างเป็นทั้งค่าเท็จใน JavaScript

if(!theString) {
 alert("the string is null or empty");
}

Falsey:

  • เท็จ
  • โมฆะ
  • ไม่ได้กำหนด
  • สตริงว่าง ''
  • หมายเลข 0
  • จำนวน NaN

16
ที่น่าตื่นตาตื่นใจนี้ได้รับการโหวตมากมาย คำตอบนี้ไม่ถูกต้อง คุณบอกว่าตัวเองเป็นค่าเท็จจะเป็น 0 ถ้าผู้ใช้พิมพ์ 0 ลงในฟิลด์นี่ไม่ใช่สตริงว่าง สตริงว่างคือสตริง "ว่าง" อย่างแท้จริง
KingOfHypocrites

3
หากผู้ใช้พิมพ์ 0 ค่าจะเป็นสตริง "0" ไม่ใช่ตัวเลข 0 ดังนั้นมันจะยังคงเป็นจริงฉันเดา กรุณาโพสต์ทางออกที่ดีที่สุดของคุณ KingOfHypocrites?
Jonas T

2
KingOfHypocrites ถูกต้องที่สตริง "0" จะให้ผลลัพธ์ที่ไม่ถูกต้อง: "0" == ผลตอบแทนที่เป็นเท็จจริง! "0" == ส่งคืนเท็จจริง
Martien de Jong

2
มีประโยชน์. รู้ว่าชุดข้อมูลของคุณ หากเป็นอินพุตที่เป็นไปได้ "0" หรือ "เท็จ" โซลูชันนี้อาจไม่ได้ผลเสมอไป
Nevyn

12

ไม่ว่าด้วยเหตุผลใดก็ตามคุณต้องการทดสอบเท่านั้นnullและemptyคุณสามารถทำได้:

function isNullOrEmpty( s ) 
{
    return ( s == null || s === "" );
}

หมายเหตุ: สิ่งนี้จะตรวจจับไม่ได้กำหนดเป็น @Raynos ที่กล่าวถึงในความคิดเห็น


สามารถปรับให้เหมาะสมกับreturn (s == null || s === "")
Raynos

@Raynos - ทำไม == แทนที่จะเป็น === เกี่ยวกับ null? และจะเกิดอะไรขึ้นถ้าวัตถุที่ส่งผ่านไม่ได้กำหนด? ไม่ได้กำหนด <> null ใช่ไหม?
Code Maverick

s == nullจับทั้งnull& undefinedตั้งแต่null == undefined
Raynos

@Raynos - ตกลงฉัน gotcha แต่ในกรณีที่คุณต้องการทราบว่า undefined หรือ null คุณจะต้องใช้ === ถูกต้อง?
Code Maverick


5

หากคุณรู้ว่าstringไม่ใช่ตัวเลขสิ่งนี้จะใช้ได้:

if (!string) {
  .
  .
  .

สตริง "0" เป็นเท็จดังนั้นคุณไม่จำเป็นต้องตรวจสอบว่าสตริงเป็นตัวเลขหรือไม่
JoJo

1
ใช่สตริง "0" เป็นความจริง แต่หากตัวแปรstringไม่ใช่สตริง แต่เป็นNumber zero ก็stringจะเป็นเท็จ จะไม่มีปัญหาถ้าเรารู้ว่าstringเป็นสตริงจริงหรือค่าว่าง
AWM

3

คุณก็ทำได้

if(!string)
{
  //...
}

สิ่งนี้จะตรวจสอบstringสตริงที่ไม่ได้กำหนดว่างเปล่าและว่างเปล่า


1

เพื่อความชัดเจนโดยif(!theString){//...}ที่สตริงเป็นตัวแปรที่ไม่ได้ประกาศจะทำให้เกิดข้อผิดพลาดที่ไม่ได้กำหนดไม่พบว่าเป็นจริง ในทางกลับกันถ้าคุณมี: if(!window.theString){//...}หรือvar theString; if(!theString){//...}มันจะทำงานตามที่คาดไว้ ในกรณีที่ไม่สามารถประกาศตัวแปรได้ (ซึ่งต่างจากการเป็นคุณสมบัติหรือไม่ได้ตั้งค่าไว้เฉยๆ) คุณต้องใช้:if(typeof theString === 'undefined'){//...}

ความชอบของฉันคือการสร้างฟังก์ชันต้นแบบที่รวมไว้สำหรับคุณ


1

เนื่องจากคำตอบที่ทำเครื่องหมายว่าถูกต้องมีข้อผิดพลาดเล็กน้อยนี่คือความพยายามที่ดีที่สุดของฉันในการหาวิธีแก้ปัญหา ฉันมีสองตัวเลือกตัวเลือกหนึ่งใช้สตริงส่วนอีกตัวใช้สตริงหรือตัวเลขเนื่องจากฉันคิดว่ามีคนจำนวนมากผสมสตริงและตัวเลขในจาวาสคริปต์

ขั้นตอน: - ถ้าวัตถุเป็นโมฆะมันจะเป็นสตริงว่างหรือว่างเปล่า - ถ้าประเภทไม่ใช่สตริง (หรือตัวเลข) ค่าสตริงจะเป็นโมฆะหรือว่างเปล่า หมายเหตุ: เราอาจมีข้อยกเว้นที่นี่เช่นกันขึ้นอยู่กับความชอบ - หากค่าสตริงที่ตัดแต่งมีความยาวน้อยกว่า 1 จะเป็นโมฆะหรือว่างเปล่า

var stringIsNullOrEmpty = function(theString)
{
    return theString == null || typeof theString != "string" || theString.trim().length < 1;
}

var stringableIsNullOrEmpty = function(theString)
{
    if(theString == null) return true;
    var type = typeof theString;
    if(type != "string" && type != "number") return true;
    return theString.toString().trim().length < 1;
}

1

คุณสามารถพูดได้ด้วยตรรกะ

สมมติว่าคุณมีชื่อตัวแปรเป็น strVal เพื่อตรวจสอบว่าเป็นโมฆะหรือว่างเปล่า

if (typeof (strVal) == 'string' && strVal.length > 0) 
{
// is has a value and it is not null  :)
}
else
{
//it is null or empty :(
}

1

คุณสามารถสร้างวิธียูทิลิตี้หนึ่งวิธีซึ่งสามารถใช้ซ้ำได้ในหลาย ๆ ที่เช่น:

 function isNullOrEmpty(str){
    var returnValue = false;
    if (  !str
        || str == null
        || str === 'null'
        || str === ''
        || str === '{}'
        || str === 'undefined'
        || str.length === 0 ) {
        returnValue = true;
    }
    return returnValue;
  }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.