Cách tốt nhất để kiểm tra một chuỗi rỗng với jquery-out-of-the-box là gì?


229

Cách tốt nhất để kiểm tra một chuỗi rỗng với jquery-out-of-the-box, tức là không có plugin? Tôi đã thử điều này .

Nhưng nó không hoạt động ít nhất là ngoài luồng. Nó sẽ là tốt đẹp để sử dụng một cái gì đó được xây dựng.

Tôi không muốn nhắc lại

if (a == null || a=='')

ở khắp mọi nơi nếu một số if (isempty(a)) sẽ có sẵn.



Câu trả lời:


556
if (!a) {
  // is emtpy
}

Để bỏ qua khoảng trắng cho chuỗi:

if (!a.trim()) {
    // is empty or whitespace
}

Nếu bạn cần hỗ trợ kế thừa (IE8-) cho trim(), hãy sử dụng $.trimhoặc một polyfill .


10
@CoffeeAddict chuỗi rỗng là giả mạo trong javascript, vì vậy, biểu thức ước tính là true nếu alà "" hoặc bất kỳ giá trị giả nào khác (null, false, không xác định, 0, NaN).
David Hellsing

21
Nếu bạn cũng cần khớp các chuỗi chỉ với khoảng trắng, thì nên sử dụngif (!$.trim(a))
Ilari Kajaste

3
Theo kinh nghiệm của tôi, phần lớn số lần bạn muốn chạy thử nghiệm này, bạn cũng muốn nó bao gồm thử nghiệm cho khoảng trắng. Vì đó là trường hợp thông thường, OP nên đưa vào câu trả lời của mình nhận xét từ @IlariKajaste
Bane

17
Câu trả lời được chấp nhận sẽ thất bại khi bạn nhập 0, tuy nhiên nó sẽ hoạt động trong 1, 2, 3, 4, v.v.
Steven

5
Không phải là if (!a.trim())một chút nguy hiểm? Điều gì nếu akhông được xác định hoặc null?
Timo

27

Liên kết bạn đưa ra dường như đang cố gắng làm điều gì đó khác với bài kiểm tra mà bạn đang cố gắng tránh lặp lại.

if (a == null || a=='')

kiểm tra nếu chuỗi là một chuỗi rỗng hoặc null. Bài viết bạn liên kết với các bài kiểm tra nếu chuỗi bao gồm toàn bộ khoảng trắng (hoặc trống).

Bài kiểm tra bạn mô tả có thể được thay thế bằng:

if (!a)

Bởi vì trong javascript, một chuỗi rỗng và null, cả hai đều đánh giá thành false trong ngữ cảnh boolean.


if(!a)Sẽ không thất bại cho một chuỗi bao gồm 4 khoảng trắng? ``
KNU

@KNU Có, nhưng câu hỏi hỏi về một chuỗi rỗng và một chuỗi bao gồm các khoảng trắng không phải là một chuỗi trống. Xem những gì tôi đã viết về sự khác biệt giữa những gì được hỏi và những gì mã được liên kết thực hiện
SpoonMeiser

Câu trả lời này là sai. Nó xử lý '0' giống như một chuỗi rỗng, không phải vậy.
John Henckel

@JohnHenckel: Nó sẽ 0giống như một chuỗi rỗng, nhưng không "0". Tôi cho rằng đó là những gì bạn có ý nghĩa? Có thể hình dung rằng điều này đang được sử dụng trong tình huống mà bạn biết đó alà một chuỗi hoặc null, nhưng đúng vậy. Một cái gì đó để nhận thức được.
SpoonMeiser

25

Dựa trên câu trả lời của David, cá nhân tôi muốn kiểm tra đối tượng đã cho trước nếu đó là một chuỗi. Nếu không, việc gọi .trim()một đối tượng không tồn tại sẽ tạo ra một ngoại lệ:

function isEmpty(value) {
  return typeof value == 'string' && !value.trim() || typeof value == 'undefined' || value === null;
}

Sử dụng:

isEmpty(undefined); // true
isEmpty(null); // true
isEmpty(''); // true
isEmpty('foo'); // false
isEmpty(1); // false
isEmpty(0); // false

tôi kiểm tra với <br /> <p> </ p> từ textarea và nó nói không trống như bình thường
kreamik

5

Kiểm tra xem dữ liệu có phải là một chuỗi rỗng (và bỏ qua mọi khoảng trắng) với jQuery:

function isBlank( data ) {
    return ( $.trim(data).length == 0 );
}

5

Để kiểm tra tất cả các 'trống' như null, không xác định, '', '', {}, [] .

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;
    }
}

Trường hợp sử dụng và kết quả.

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

3
if(!my_string){ 
// stuff 
}

if(my_string !== "")

nếu bạn muốn chấp nhận null nhưng từ chối trống

EDIT: woops, quên điều kiện của bạn là nếu nó trống


2

Hãy thử thực hiện điều này trong bảng điều khiển trình duyệt của bạn hoặc trong tệp node.js thay thế.

var string = ' ';
string ? true : false;
//-> true

string = '';
string ? true : false;
//-> false

Do đó, một cấu trúc phân nhánh đơn giản sẽ đủ cho thử nghiệm.

if(string) {
    // string is not empty
}

1
tốt hơn là nói "!! chuỗi" thay vì "chuỗi? true: false" hoặc thậm chí chỉ là "chuỗi".
ア レ ッ ク

2

Vì bạn cũng có thể nhập số cũng như chuỗi loại cố định, nên câu trả lời thực sự là:

function isBlank(value) {
  return $.trim(value);
}

Không nên như thế này sao? return !!$.trim(value);
wonsuc

-1

Thử cái này

if(!a || a.length === 0)

OP đặc biệt tuyên bố rằng họ đang tìm kiếm một giải pháp thay thế cho việc này.
Wayne

-4
if((a.trim()=="")||(a=="")||(a==null))
{
    //empty condition
}
else
{
    //working condition
}

Nếu a là nullthì a.trim()sẽ thất bại. Đây là một thứ tự xấu để kiểm tra mọi thứ. Và nếu bạn thay đổi thứ tự, câu trả lời của bạn không cung cấp bất cứ điều gì, điều đó chưa được đề xuất trước đây.
Mike Scotty
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.