วิธีที่ดีที่สุดในการทดสอบสตริงว่างด้วย jquery-out-of-the-box นั่นคือไม่มีปลั๊กอิน? ฉันพยายามนี้
แต่มันก็ไม่ได้ผลอย่างที่คิด มันคงจะดีถ้าได้ใช้สิ่งที่มีอยู่ในตัว
ฉันไม่ต้องการพูดซ้ำ
if (a == null || a=='')
ทุกที่ถ้า if (isempty(a))
มี
วิธีที่ดีที่สุดในการทดสอบสตริงว่างด้วย jquery-out-of-the-box นั่นคือไม่มีปลั๊กอิน? ฉันพยายามนี้
แต่มันก็ไม่ได้ผลอย่างที่คิด มันคงจะดีถ้าได้ใช้สิ่งที่มีอยู่ในตัว
ฉันไม่ต้องการพูดซ้ำ
if (a == null || a=='')
ทุกที่ถ้า if (isempty(a))
มี
คำตอบ:
if (!a) {
// is emtpy
}
วิธีละเว้นพื้นที่สีขาวสำหรับสตริง:
if (!a.trim()) {
// is empty or whitespace
}
หากคุณต้องการการสนับสนุนมรดก (IE8-) สำหรับtrim()
การใช้งาน$.trim
หรือpolyfill
a
เป็น "" หรือค่าเท็จอื่น ๆ (null, เท็จ, ไม่ได้กำหนด, 0, NaN)
if (!$.trim(a))
if (!a.trim())
บิตอันตรายหรือไม่? เกิดอะไรขึ้นถ้าa
ไม่ได้กำหนดหรือเป็นโมฆะ?
ลิงก์ที่คุณให้ดูเหมือนจะพยายามทำสิ่งที่แตกต่างจากการทดสอบที่คุณพยายามหลีกเลี่ยงการทำซ้ำ
if (a == null || a=='')
ทดสอบว่าสตริงนั้นเป็นสตริงว่างหรือโมฆะ บทความที่คุณเชื่อมโยงกับการทดสอบว่าสตริงประกอบด้วยช่องว่างทั้งหมด (หรือว่างเปล่า)
การทดสอบที่คุณอธิบายสามารถถูกแทนที่ด้วย:
if (!a)
เนื่องจากใน javascript สตริงว่างและ null ทั้งคู่ประเมินว่าเป็นเท็จในบริบทบูลีน
if(!a)
มันจะล้มเหลวสำหรับสตริงที่ประกอบด้วยการพูด 4 ช่องว่างหรือไม่? ``
0
เช่นสตริงที่ว่างเปล่า "0"
แต่ไม่ ฉันคิดว่านั่นคือสิ่งที่คุณหมายถึงอะไร เป็นไปได้ว่าสิ่งนี้กำลังถูกใช้ในสถานการณ์ที่คุณรู้ว่าa
เป็นสตริงหรือโมฆะ แต่ใช่ สิ่งที่ต้องระวัง
จากคำตอบของดาวิดฉันชอบที่จะตรวจสอบวัตถุที่ให้มาก่อนถ้าเป็นสตริงเลย มิฉะนั้นการเรียก.trim()
วัตถุที่ไม่มีอยู่จะทำให้เกิดข้อยกเว้น:
function isEmpty(value) {
return typeof value == 'string' && !value.trim() || typeof value == 'undefined' || value === null;
}
การใช้งาน:
isEmpty(undefined); // true
isEmpty(null); // true
isEmpty(''); // true
isEmpty('foo'); // false
isEmpty(1); // false
isEmpty(0); // false
ตรวจสอบว่าข้อมูลเป็นสตริงว่างเปล่า (และละเว้นพื้นที่สีขาว) ด้วย jQuery:
function isBlank( data ) {
return ( $.trim(data).length == 0 );
}
การตรวจสอบทั้งหมด 'เปล่า' เหมือนโมฆะ undefined, '', '', {} []
var isEmpty = function(data) {
if(typeof(data) === 'object'){
if(JSON.stringify(data) === '{}' || JSON.stringify(data) === '[]'){
return true;
}else if(!data){
return true;
}
return false;
}else if(typeof(data) === 'string'){
if(!data.trim()){
return true;
}
return false;
}else if(typeof(data) === 'undefined'){
return true;
}else{
return false;
}
}
ใช้เคสและผลลัพธ์
console.log(isEmpty()); // true
console.log(isEmpty(null)); // true
console.log(isEmpty('')); // true
console.log(isEmpty(' ')); // true
console.log(isEmpty(undefined)); // true
console.log(isEmpty({})); // true
console.log(isEmpty([])); // true
console.log(isEmpty(0)); // false
console.log(isEmpty('Hey')); // false
if(!my_string){
// stuff
}
และ
if(my_string !== "")
ถ้าคุณต้องการยอมรับค่าว่าง แต่ปฏิเสธค่าว่าง
แก้ไข: วูบวาบลืมสภาพของคุณคือถ้ามันว่างเปล่า
ลองดำเนินการนี้ในคอนโซลเบราว์เซอร์ของคุณหรือในแบบจำลอง node.js
var string = ' ';
string ? true : false;
//-> true
string = '';
string ? true : false;
//-> false
ดังนั้นโครงสร้างกิ่งอย่างง่ายจะเพียงพอสำหรับการทดสอบ
if(string) {
// string is not empty
}
เนื่องจากคุณสามารถป้อนหมายเลขรวมทั้งสตริงประเภทคงที่คำตอบจึงควรเป็น:
function isBlank(value) {
return $.trim(value);
}
return !!$.trim(value);
if((a.trim()=="")||(a=="")||(a==null))
{
//empty condition
}
else
{
//working condition
}
null
นั้นa.trim()
จะล้มเหลว นี่เป็นคำสั่งที่ไม่ถูกต้องในการตรวจสอบสิ่งต่าง ๆ และถ้าคุณเปลี่ยนคำสั่งคำตอบของคุณไม่ได้ให้อะไรเลยที่ไม่ได้รับการแนะนำมาก่อน