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.