C # String.IsNullOrEmpty Javascript tương đương


86

Tôi muốn thử thực hiện lệnh gọi chuỗi tương đương với C # String.IsNullOrEmpty(string)trong javascript. Tôi đã xem trên mạng với giả định rằng có một cuộc gọi đơn giản để thực hiện, nhưng tôi không thể tìm thấy một cuộc gọi nào.

Hiện tại, tôi đang sử dụng một if(string === "" || string === null)câu lệnh để đề cập đến nó, nhưng tôi muốn sử dụng một phương pháp được xác định trước (tôi tiếp tục nhận được một số trường hợp bị trượt vì một số lý do)

Lệnh gọi javascript (hoặc jquery nếu sau đó có một) gần nhất sẽ là gì?



3
@ DanielA.White đối số là như nhau nhưng, đối với một nhà phát triển C # như tôi, câu hỏi này (với tiêu đề của nó) có nhiều khả năng được tìm thấy
Daniele Armanasco

Câu trả lời:


211

Bạn đang suy nghĩ quá mức. Chuỗi rỗng và chuỗi rỗng đều là giá trị falsey trong JavaScript.

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

Falsey:

  • sai
  • vô giá trị
  • chưa xác định
  • Chuỗi trống ''
  • Con số 0
  • Số NaN

16
Thật ngạc nhiên là điều này đã nhận được rất nhiều phiếu bầu. Câu trả lời này không chính xác. Bạn đã tự nói rằng giá trị falsey sẽ là 0. Nếu người dùng nhập 0 vào một trường thì đây không phải là một chuỗi trống. Một chuỗi rỗng nghĩa đen là một chuỗi "rỗng".
KingOfHypocrites

3
Nếu người dùng gõ 0, giá trị sẽ là chuỗi "0" không phải số 0. Vì vậy, tôi đoán nó vẫn đúng. Hãy đăng giải pháp tốt nhất của bạn, KingOfHypocrites?
Jonas T

2
KingOfHypocrites đúng ở chỗ chuỗi "0" sẽ cho kết quả không chính xác: "0" == false trả về true! "0" == false trả về true
Martien de Jong

2
Hữu ích. Biết tập dữ liệu của bạn. Nếu "0" hoặc "false" là đầu vào có thể có, thì giải pháp này có thể không phải lúc nào cũng hoạt động.
Nevyn

12

Nếu, vì bất kỳ lý do gì, bạn chỉ muốn kiểm tra nullempty, bạn có thể làm:

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

Lưu ý: Điều này cũng sẽ không được xác định như @Raynos được đề cập trong các nhận xét.


có thể được tối ưu hóa thànhreturn (s == null || s === "")
Raynos

@Raynos - Tại sao == thay vì === đối với null? Và điều gì sẽ xảy ra nếu đối tượng được truyền vào là không xác định? undefined <> null, phải không?
Mã Maverick

s == nullbắt cả hai nullundefinedkể từnull == undefined
Raynos

@Raynos - Ok, tôi hiểu rồi, nhưng trong trường hợp bạn muốn thực sự biết không xác định hoặc null, bạn sẽ cần sử dụng ===, đúng không?
Mã Maverick


5

Nếu bạn biết đó stringkhông phải là số, điều này sẽ hoạt động:

if (!string) {
  .
  .
  .

Chuỗi "0" là falsey, vì vậy bạn không cần phải kiểm tra xem chuỗi có phải là số hay không.
JoJo

1
Đúng, chuỗi "0" là true, nhưng nếu biến stringtrên thực tế không phải là chuỗi mà là Số 0, thì stringsẽ là falsey. Sẽ không có vấn đề gì nếu chúng ta biết rằng đó stringlà một chuỗi thực hoặc null.
awm

3

bạn chỉ có thể làm

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

Điều này sẽ kiểm tra stringchuỗi không xác định, null và rỗng.


1

Để rõ ràng, if(!theString){//...}trong đó Chuỗi là một biến không được khai báo sẽ tạo ra một lỗi không xác định, không tìm thấy nó đúng. Mặt khác nếu bạn có: if(!window.theString){//...}hoặc var theString; if(!theString){//...}nó sẽ hoạt động như mong đợi. Trong trường hợp một biến có thể không được khai báo (trái ngược với thuộc tính hoặc đơn giản là không được đặt), bạn cần sử dụng:if(typeof theString === 'undefined'){//...}

Sở thích của tôi là tạo một hàm nguyên mẫu kết thúc nó cho bạn.


1

Vì câu trả lời được đánh dấu là đúng có một lỗi nhỏ, đây là cách tốt nhất của tôi để tìm ra giải pháp. Tôi có hai tùy chọn, một lựa chọn lấy chuỗi, tùy chọn kia lấy chuỗi hoặc số, vì tôi cho rằng nhiều người đang trộn chuỗi và số trong javascript.

Các bước: -Nếu đối tượng là null thì nó là một chuỗi rỗng hoặc rỗng. -Nếu kiểu không phải là chuỗi (hoặc số) thì giá trị chuỗi là null hoặc rỗng. LƯU Ý: chúng tôi cũng có thể đưa ra một ngoại lệ ở đây, tùy thuộc vào sở thích. -Nếu giá trị chuỗi bị cắt có độ dài nhỏ hơn 1 thì giá trị đó là null hoặc rỗng.

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

bạn có thể nói nó bằng logic

Giả sử bạn có một tên biến là strVal, để kiểm tra xem là null hay rỗng

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

1

Bạn có thể tạo một phương thức Tiện ích có thể được sử dụng lại ở nhiều nơi như:

 function isNullOrEmpty(str){
    var returnValue = false;
    if (  !str
        || str == null
        || str === 'null'
        || str === ''
        || str === '{}'
        || str === 'undefined'
        || str.length === 0 ) {
        returnValue = true;
    }
    return returnValue;
  }
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.