jquery - Làm thế nào để kiểm tra nếu một biến là null hoặc chuỗi rỗng hoặc toàn bộ là khoảng trắng trong JavaScript?
Tôi cần kiểm tra xem một biến có rỗng hay có tất cả các khoảng trống hay chỉ trống ("").
Tôi có những thứ sau, nhưng nó không hoạt động:
var addr;
addr = " ";
if (!addr) {
// pull error
}
Nếu tôi làm theo những điều sau, nó sẽ hoạt động:
if (addr) {
}
Những gì tôi cần là một cái gì đó giống như phương thức C# String.IsNullOrWhiteSpace(value).
Câu trả lời #1
Một giải pháp không dùng jQuery mô phỏng gần hơn IsNullOrWhiteSpace, nhưng chỉ để phát hiện null, rỗng hoặc toàn khoảng trắng:
function isEmptyOrSpaces(str){
return str === null || str.match(/^ *$/) !== null;
}
...sau đó:
var addr = ' ';
if(isEmptyOrSpaces(addr)){
// error
}
* EDIT * Xin lưu ý rằng op nêu cụ thể:
Tôi cần kiểm tra để xem nếu một biến là null hoặc có bất kỳ khoảng trắng nào hoặc đơn giản là trống.
Vì vậy, mặc dù đúng là "khoảng trắng" bao gồm nhiều hơn null, dấu cách hoặc trống, câu trả lời của tôi nhằm trả lời câu hỏi cụ thể của người đặt câu hỏi. Điều này quan trọng vì người đặt câu hỏi có thể KHÔNG muốn bắt những thứ như tab, ví dụ.
Câu trả lời #2
if (addr == null || addr.trim() === ''){
//...
}
So sánh null cũng sẽ bắt được undefined. Nếu bạn muốn false cũng được thông qua, hãy dùng !addr. Để tương thích ngược với trình duyệt, hãy thay addr.trim() bằng $.trim(addr).
Câu trả lời #3
Bạn có thể sử dụng if(addr && (addr=$.trim(addr)))
Điều này có ưu điểm là thực sự loại bỏ bất kỳ khoảng trắng bên ngoài nào khỏi addr thay vì chỉ bỏ qua nó khi thực hiện kiểm tra.
Tham khảo: http://api.jquery.com/jQuery.trim/
Câu trả lời số 4
Câu hỏi cũ, nhưng tôi nghĩ nó xứng đáng có một câu trả lời đơn giản hơn.
Bạn có thể đơn giản làm như sau:
var addr = " ";
if (addr && addr.trim()) {
console.log("I'm not null, nor undefined, nor empty string, nor string composed of whitespace only.");
}
