2011-04-21 7 views
66

자바 스크립트에서 C# String.IsNullOrEmpty(string)과 동일한 문자열 호출을하려고합니다. 나는 간단한 호출을 만들어야한다고 가정하고 온라인으로 보았지만 찾을 수 없었다. 지금은 그것을 커버하기 위해 if(string === "" || string === null) 문을 사용하고 있지만 오히려C# String.IsNullOrEmpty Javascript 해당 항목

가장 가까운 자바 스크립트 (또는 JQuery와 경우 무엇입니까 (I 어떤 이유로으로 미끄러 어떤 경우를 점점 계속) 미리 정의 된 방법을 사용하는 것이 들어

그렇다면 하나의) 호출은 동등 할 것입니다. 당신이 string 숫자 아니라는 것을 알고있는 경우

+0

[jquery-out-of-the-bo와 함께 빈 문자열을 테스트하는 가장 좋은 방법은 무엇입니까? x?] (http://stackoverflow.com/questions/1812245/what-is-the-best-way-to-test-for-an-empty-string-with-jquery-out-of-the-box) –

+3

@ DanielA.White 인수가 동일하지만 나와 같은 C# 개발자의 경우 제목과 함께이 질문을 찾을 가능성이 더 높습니다. –

답변

155

지나치게 생각하고 있습니다. Null과 빈 문자열은 모두 JavaScript에서 잘못된 값입니다.

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

Falsey :

  • 거짓
  • 정의되지 않은
  • 빈 문자열 ''
  • 수 0
  • 수 NaN의
+10

놀라 울 정도로 많은 투표가있었습니다. 이 대답은 정확하지 않습니다. 당신은 틀린 값이 0이 될 것이라고 말했다. 사용자가 0을 필드에 입력하면 이것은 빈 문자열이 아니다. 빈 문자열은 말 그대로 "빈"문자열입니다. – KingOfHypocrites

+2

사용자가 0을 입력하면 값은 숫자 0이 아닌 문자열 "0"이됩니다. 그래도 여전히 사실 일 것입니다. 최선의 해결책 인 KingOfHypocrites를 게시 하시겠습니까? –

+2

KingOfHypocrites 문자열 "0"잘못된 결과를 제공하는 것입니다. "0"== false는 true를 반환합니다. ! "0"== false는 true를 반환합니다. –

5

이 작동합니다 :

if (!string) { 
    . 
    . 
    . 
+0

문자열 "0"은 false이므로 확인하지 않아도됩니다. 문자열은 숫자입니다. – JoJo

+0

"0"은 진실임을 의미합니다. – JoJo

+1

예, 문자열 "0"은 진실입니다. 그러나 변수'string'이 실제로는 문자열이 아니고 * 숫자 *가 0이면 'string'은 거짓이됩니다. 'string'이 실제 문자열이나 null이라는 것을 알면 문제가되지 않습니다. – awm

11

어떤 이유로, 테스트하고 싶었 경우에만 nullempty, 당신은 할 수 :

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

참고 : 이것은 주석에 언급 된 @Raynos와 같이 정의되지 않은 것도 잡아낼 수 있습니다.

+0

은'return (s == null || s === "")'에 최적화 될 수 있습니다. – Raynos

+0

@Raynos - null 대신에 == == 왜? 그리고 전달 된 객체가 정의되지 않았다면 어떻게 될까요? undefined <> null, 맞습니까? –

+0

's == null'은'null == undefined' 때문에'null'과'undefined'를 모두 잡았습니다. – Raynos

3

당신은

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

이 널 (null), 정의되지 않은, 빈 문자열 string을 확인합니다 할 수 있습니다.

1

분명히하려면 if(!theString){//...} 여기서 theString은 선언되지 않은 변수이므로 정의되지 않은 오류가 발생하고 실제로 발견되지 않습니다. 반면에 : if(!window.theString){//...} 또는 var theString; if(!theString){//...} 인 경우 예상대로 작동합니다. 변수가 선언되지 않는 경우 (속성이 아니거나 단순히 설정되지 않은 경우)에는 다음을 사용해야합니다. if(typeof theString === 'undefined'){//...}

필자가 선호하는 프로토 타입 함수를 만드는 것이 가장 좋습니다.

1

올바른 것으로 표시된 대답에는 작은 오류가 있으므로 여기 해결책을 생각해 보는 것이 최선입니다. 나는 많은 사람들이 자바 스크립트에서 문자열과 숫자를 섞어 쓰고 있다고 가정하기 때문에 두 가지 옵션, 하나는 문자열을 취하고 다른 하나는 문자열 또는 숫자를 사용한다.

단계 : - 개체가 null이면 null 또는 빈 문자열입니다. - 유형이 문자열 (또는 숫자)이 아닌 경우 문자열 값이 null이거나 비어 있습니다.참고 : 환경 설정에 따라 여기에서도 예외가 발생할 수 있습니다. - 트림 된 문자열 값의 길이가 1보다 작 으면 null이거나 비어 있습니다.

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

당신은

하자가

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

당신이 할 수있는 하나의 유틸리티 방법을 만들 수 있습니다 null 또는 비어있는 경우 확인하기 위해, 변수 이름 strVal이 있다고 논리에 의해 그것을 말할 수 있습니다

function isNullOrEmpty(str){ 
    var returnValue = false; 
    if ( !str 
     || str == null 
     || str === 'null' 
     || str === '' 
     || str === '{}' 
     || str === 'undefined' 
     || str.length === 0) { 
     returnValue = true; 
    } 
    return returnValue; 
    }