jquery-out-of-the-box로 빈 문자열을 테스트하는 가장 좋은 방법은 무엇입니까?


229

jquery-out-of-the-box, 즉 플러그인없이 빈 문자열을 테스트하는 가장 좋은 방법은 무엇입니까? 나는 노력 .

그러나 적어도 기본적으로는 작동하지 않았습니다. 내장 된 것을 사용하는 것이 좋습니다.

반복하고 싶지 않습니다

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

일부 if (isempty(a)) 는 가능 하다면 어디든지 .



답변:


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

문자열의 공백을 무시하려면

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

에 대한 레거시 지원 (IE8-)이 필요한 경우 또는 polyfill을trim() 사용 하십시오 .$.trim


10
@CoffeeAddict 빈 문자열은 자바 스크립트에서 거짓이므로, a""또는 다른 거짓 값 (null, false, undefined, 0, NaN) 이면 표현식이 true로 평가됩니다 .
David Hellsing

21
공백만으로 문자열을 일치시켜야하는 경우 사용하는 것이 좋습니다.if (!$.trim(a))
Ilari Kajaste

3
내 경험에 따르면이 테스트를 실행하려는 대부분의 시간에는 공백 테스트가 포함되기를 원합니다. 즉 보통의 경우이기 때문에, 영업 이익은 그의 대답에 @IlariKajaste에서 주석이 포함되어야합니다
베인

17
0을 입력하면 허용 된 답변이 실패하지만 1, 2, 3, 4 등에서 작동합니다.
Steven

5
if (!a.trim())조금 위험 하지 않습니까? 어떤 경우 a정의되지는 null?
Timo

27

당신이 준 링크는 반복하지 않으려는 테스트와 다른 것을 시도하는 것 같습니다.

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

문자열이 빈 문자열인지 아니면 null인지 테스트합니다. 연결 한 기사는 문자열이 공백으로 구성되어 있는지 또는 비어 있는지 테스트합니다.

설명한 테스트는 다음으로 대체 할 수 있습니다.

if (!a)

자바 스크립트에서는 빈 문자열과 null이므로 모두 부울 컨텍스트에서 false로 평가됩니다.


if(!a)4 개의 공백으로 구성된 문자열에 대해서는 실패하지 않습니까? ``
KNU

@KNU 네, 그러나 질문은 빈 문자열에 대해 묻습니다. 공백으로 구성된 문자열은 빈 문자열이 아닙니다. 내가 요청한 것과 링크 된 코드의 차이점에 대해 내가 쓴 것을보십시오
SpoonMeiser

이 답변은 잘못되었습니다. '0'을 빈 문자열처럼 취급합니다.
존 헨켈

@JohnHenckel : 0빈 문자열처럼 취급 되지만 그렇지는 않습니다 "0". 그게 당신의 뜻이라고 생각합니까? 이것이 a문자열인지 또는 null 인지 알고있는 상황에서 사용되고 있다고 생각할 수 있습니다. 알아야 할 것.
SpoonMeiser

25

를 기반으로 다윗의 대답 나는 개인적으로이 문자열 모두에있는 경우 먼저 지정된 객체를 확인하고 싶다. 그렇지 않으면 .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

나는 textarea에서 <br /> <p> </ p>로 확인하고 그것이 비어 있지 않다고 말했다
kreamik

5

jQuery를 사용하여 데이터가 빈 문자열인지 확인하고 공백을 무시하십시오.

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

5

null, 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

3
if(!my_string){ 
// stuff 
}

if(my_string !== "")

null을 허용하고 비우기를 거부하려는 경우

편집 : 으악, 빈 상태 인 경우를 잊어 버렸습니다.


2

브라우저 콘솔이나 node.js repl에서 이것을 실행하십시오.

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

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

따라서 간단한 분기 구조가 테스트에 충분합니다.

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

1
"string? true : false"또는 "string"대신 "!! string"이라고 말하는 것이 좋습니다.
ア レ ッ ク ス

2

고정 유형 문자열뿐만 아니라 숫자도 입력 할 수 있으므로 실제로 다음과 같은 대답이 필요합니다.

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

이러면 안되나요? return !!$.trim(value);
wonsuc


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

A는 경우 null다음 a.trim()실패합니다. 이것은 점검하는 나쁜 순서입니다. 그리고 당신이 순서를 변경하면, 당신의 대답은 이전에 제안되지 않은 아무것도 제공하지 않습니다.
Mike Scotty
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.