JavaScript에서 빈/und 정의/null 문자열을 확인하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/154059

  •  03-07-2019
  •  | 
  •  

문제

나는 이것을 보았다 , 그러나 나는 JavaScript 특정 예를 보지 못했습니다. 간단한 것이 있습니까? string.Empty JavaScript로 제공되거나 확인하는 경우입니다. ""?

도움이 되었습니까?

해결책

가치가 있는지 확인하고 싶다면 할 수 있습니다.

if (strValue) {
    //do something
}

NULL 위의 빈 문자열을 특별히 확인 해야하는 경우, 나는 "" 사용하는 최선의 방법입니다 그만큼 === 운영자 (따라서 실제로 비교하는 문자열이라는 것을 알 수 있습니다).

if (strValue === "") {
    //...
}

다른 팁

문자열이 비어 있는지 확인하기 위해, null 또는 정의되지 않은 i를 사용합니다.

function isEmpty(str) {
    return (!str || 0 === str.length);
}

문자열이 비워 지는지 확인하려면, null 또는 정의되지 않은 I를 사용합니다.

function isBlank(str) {
    return (!str || /^\s*$/.test(str));
}

문자열이 비어 있는지 확인하거나 흰색 공간 만 포함되어 있는지 확인합니다.

String.prototype.isEmpty = function() {
    return (this.length === 0 || !this.trim());
};

위의 모든 것이 좋지만 이것은 더 나을 것입니다. 사용 !!(그렇지 않습니다) 운영자.

if(!!str){
some code here;
}

또는 유형 주조 사용 :

if(Boolean(str)){
    codes here;
}

둘 다 동일한 기능을 수행하고 유형은 변수를 부울에 캐스트합니다. str 변수입니다.
보고 false ~을 위한 null,undefined,0,000,"",false.
보고 true 문자열 "0"및 whitespace "".

문자열이 빈 공간이 많지 않은지 확인 해야하는 경우 (양식 검증을위한 것이라고 가정) 공간에서 교체해야합니다.

if(str.replace(/\s/g,"") == ""){
}

당신이 얻을 수있는 가장 가까운 것 str.Empty (STR이 문자열이라는 전제 조건으로) :

if (!str.length) { ...

나는 사용한다 :

function empty(e) {
  switch (e) {
    case "":
    case 0:
    case "0":
    case null:
    case false:
    case typeof this == "undefined":
      return true;
    default:
      return false;
  }
}

empty(null) // true
empty(0) // true
empty(7) // false
empty("") // true
empty((function() {
    return ""
  })) // false

노력하다:

if (str && str.trim().length) {  
    //...
}

기능:

function is_empty(x)
{
   return ( 
        (typeof x == 'undefined')
                    ||
        (x == null) 
                    ||
        (x == false)  //same as: !x
                    ||
        (x.length == 0)
                    ||
        (x == "")
                    ||
        (x.replace(/\s/g,"") == "")
                    ||
        (!/[^\s]/.test(x))
                    ||
        (/^\s*$/.test(x))
  );
}

PS는 JavaScript에서 라인 브레이크를 사용하지 마십시오 return;

var s; // undefined
var s = ""; // ""
s.length // 0

JavaScript에서 빈 문자열을 나타내는 것은 없습니다. 어느 쪽이든 확인하십시오 length (VAR이 항상 줄이 될 것임을 알고 있다면) 또는 ""

당신이 사용할 수있는 Lodash : _.isempty (값).

그것은 많은 사례를 다룹니다 {}, '', null, undefined 등.

그러나 항상 돌아옵니다 true ~을 위한 Number 유형 JavaScript 원시 데이터 유형 처럼 _.isEmpty(10) 또는 _.isEmpty(Number.MAX_VALUE) 둘 다 반환합니다 true.

나는 가장 걱정하지 않을 것입니다 효율적인 방법. 의도에 가장 명확한 것을 사용하십시오. 나에게는 보통입니다 strVar == "".

편집 : 댓글 당 콘스탄틴, 만약 Strvar가 정수 0 값을 포함하는 방법을 일부로 만들 수 있다면, 그것은 실제로 의도적 인 청구 상황 중 하나 일 것입니다.

regexps와 함께 갈 수도 있습니다.

if((/^\s*$/).test(str)) { }

비어 있거나 공백으로 채워진 문자열을 점검합니다.

많은 답변과 많은 다른 가능성!

빠르고 간단한 구현에 대한 의심의 여지없이 승자는 다음과 같습니다. if (!str.length) {...}

그러나 다른 많은 예제가 가능합니다. 이를 수행하는 가장 좋은 기능적 방법은 다음과 같습니다.

function empty(str)
{
    if (typeof str == 'undefined' || !str || str.length === 0 || str === "" || !/[^\s]/.test(str) || /^\s*$/.test(str) || str.replace(/\s/g,"") === "")
    {
        return true;
    }
    else
    {
        return false;
    }
}

조금 과도합니다.

  1. 확인하십시오 var a; 존재하다
  2. 트림 false spaces 그 값에서 테스트하십시오 emptiness

    if ((a)&&(a.trim()!=''))
    {
      // if variable a is not empty do this 
    }
    

또한, 공백으로 채워진 문자열을 "빈"으로 간주하는 경우. 이 regex로 테스트 할 수 있습니다.

!/\S/.test(string); // Returns true if blank.

나는 보통 이와 같은 것을 사용합니다.

if (!str.length) {
//do some thing
}

나는 문자열에서 null 문자의 가능성을 고려한 답을 발견하지 못했습니다. 예를 들어, 널 문자열이있는 경우 :

var y = "\0"; // an empty string, but has a null character
(y === "") // false, testing against an empty string does not work
(y.length === 0) // false
(y) // true, this is also not expected
(y.match(/^[\s]*$/)) // false, again not wanted

귀무를 테스트하려면 다음과 같은 작업을 수행 할 수 있습니다.

String.prototype.isNull = function(){ 
  return Boolean(this.match(/^[\0]*$/)); 
}
...
"\0".isNull() // true

널 문자열에서 작동하고 빈 문자열에서 작동하며 모든 문자열에 액세스 할 수 있습니다. 또한 다른 JavaScript 빈 또는 공백 문자 (예 : 비정규 공간, 바이트 주문 마크, 줄/단락 분리기 등)를 포함하도록 확장 될 수 있습니다.

비어있을뿐만 아니라 빈 줄을 감지해야한다면 Goral의 대답을 추가 할 것입니다.

function isEmpty(s){
    return !s.length;    
}

function isBlank(s){
    return isEmpty(s.trim());    
}

이 모든 대답은 좋습니다.

그러나 변수는 문자열이며 공백 만 포함되어 있지 않으며 (이것은 나에게 중요합니다) '0'(문자열)을 포함 할 수 있습니다.

내 버전 :

function empty(str){
    return !str || !/[^\s]+/.test(str);
}

empty(null); // true
empty(0); // true
empty(7); // false
empty(""); // true
empty("0"); // false
empty("  "); // true

샘플 켜짐 jsfiddle.

나는 보통 다음과 같은 것을 사용합니다.

if (str == "") {
     //Do Something
}
else {
     //Do Something Else
}

조합을 사용하고 가장 빠른 수표가 먼저 있습니다.

function isBlank(pString){
    if (!pString || pString.length == 0) {
        return true;
    }
    // checks for a non-white space character 
    // which I think [citation needed] is faster 
    // than removing all the whitespace and checking 
    // against an empty string
    return !/[^\s]+/.test(pString);
}

공백 문자열을 무시하면 이것을 사용하여 NULL, 빈 및 정의되지 않은지 확인할 수 있습니다.

var obj = {};
(!!obj.str) //returns false

obj.str = "";
(!!obj.str) //returns false

obj.str = null;
(!!obj.str) //returns false

간결하고 정의되지 않은 속성에 대해 작동하지만 가장 읽기 쉬운 것은 아닙니다.

나는 당신이 비 스트링 및 비어 있지 않은/널 값을 테스터 기능에 전달하면 어떤 일이 발생하는지 연구했습니다. 많은 사람들이 알고 있듯이 (0 == "")는 JavaScript에서는 사실이지만 0은 값이며 비어 있지 않거나 null이므로 테스트 할 수 있습니다.

다음 두 기능은 정의되지 않은, 널, 빈/공백 값에 대해서만 true를 반환하고 숫자, 부울, 개체, 표현식 등과 같은 다른 모든 것에 대해 false.

function IsNullOrEmpty(value)
{
    return (value == null || value === "");
}
function IsNullOrWhiteSpace(value)
{
    return (value == null || !/\S/.test(value));
}

더 복잡한 예는 존재하지만 간단하고 일관된 결과를 제공합니다. (value == null) 점검에 포함되어 있으므로 정의되지 않은 것을 테스트 할 필요가 없습니다. 다음과 같은 문자열에 추가하여 C# 동작을 모방 할 수도 있습니다.

String.IsNullOrEmpty = function (value) { ... }

문자열 클래스의 인스턴스가 null이면 오류가 발생하기 때문에 문자열 프로토 타입에 넣고 싶지 않습니다.

String.prototype.IsNullOrEmpty = function (value) { ... }
var myvar = null;
if (1 == 2) { myvar = "OK"; } // could be set
myvar.IsNullOrEmpty(); // throws error

다음 값 배열로 테스트했습니다. 의심스러운 경우 기능을 테스트하기 위해 반복 할 수 있습니다.

// Helper items
var MyClass = function (b) { this.a = "Hello World!"; this.b = b; };
MyClass.prototype.hello = function () { if (this.b == null) { alert(this.a); } else { alert(this.b); } };
var z;
var arr = [
// 0: Explanation for printing, 1: actual value
    ['undefined', undefined],
    ['(var) z', z],
    ['null', null],
    ['empty', ''],
    ['space', ' '],
    ['tab', '\t'],
    ['newline', '\n'],
    ['carriage return', '\r'],
    ['"\\r\\n"', '\r\n'],
    ['"\\n\\r"', '\n\r'],
    ['" \\t \\n "', ' \t \n '],
    ['" txt \\t test \\n"', ' txt \t test \n'],
    ['"txt"', "txt"],
    ['"undefined"', 'undefined'],
    ['"null"', 'null'],
    ['"0"', '0'],
    ['"1"', '1'],
    ['"1.5"', '1.5'],
    ['"1,5"', '1,5'], // valid number in some locales, not in js
    ['comma', ','],
    ['dot', '.'],
    ['".5"', '.5'],
    ['0', 0],
    ['0.0', 0.0],
    ['1', 1],
    ['1.5', 1.5],
    ['NaN', NaN],
    ['/\S/', /\S/],
    ['true', true],
    ['false', false],
    ['function, returns true', function () { return true; } ],
    ['function, returns false', function () { return false; } ],
    ['function, returns null', function () { return null; } ],
    ['function, returns string', function () { return "test"; } ],
    ['function, returns undefined', function () { } ],
    ['MyClass', MyClass],
    ['new MyClass', new MyClass()],
    ['empty object', {}],
    ['non-empty object', { a: "a", match: "bogus", test: "bogus"}],
    ['object with toString: string', { a: "a", match: "bogus", test: "bogus", toString: function () { return "test"; } }],
    ['object with toString: null', { a: "a", match: "bogus", test: "bogus", toString: function () { return null; } }]
];

정확히 빈 문자열인지 확인하려면 :

if(val==="")...

비 빈 문자열인지 값이 없는지 확인하려면 값이없는 경우 (NULL, UNDEFINED, 0, NAN, FALSE, ...)

if(!val)...

한편 우리는 모든 '빈'을 확인하는 한 가지 기능을 가질 수 있습니다. 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

아니요 isEmpty() 방법, 유형과 길이를 확인해야합니다.

if (typeof test === 'string' && test.length === 0){
  ...

런타임 오류를 피하기 위해 유형 확인이 필요합니다. test ~이다 undefined 또는 null.

확인 변수가 문자열이라고 가정하지 마십시오. 이 var의 길이가 있다면 문자열이라고 가정하지 마십시오.

문제는 다음과 같습니다. 앱이해야 할 일에 대해 신중하게 생각하고 받아 들일 수 있습니다. 강력한 것을 구축하십시오.

메소드 / 기능이 비 빈 문자열 만 처리 해야하는 경우 인수가 비어있는 문자열인지 여부를 테스트하고 '트릭'을 수행하지 않습니다.

여기서 조언을주의 깊게 따르지 않으면 폭발 할 무언가의 예로서.


var getLastChar = function (str) {
 if (str.length > 0)
   return str.charAt(str.length - 1)
}

getLastChar('hello')
=> "o"

getLastChar([0,1,2,3])
=> TypeError: Object [object Array] has no method 'charAt'

그래서, 나는 고집 할 것입니다


if (myVar === '')
  ...

이 시도

str.value.length == 0

당신은 그것을 기본에 쉽게 추가 할 수 있습니다 객체에 자바 스크립트 그리고 반복해서 재사용 ...
아래 코드와 같은 단순한 것이 확인하려면 작업을 수행 할 수 있습니다. '' 빈 줄 :

String.prototype.isEmpty = String.prototype.isEmpty || function() {
  return !(!!this.length);
}

그렇지 않으면 둘 다 확인하려면 '' 빈 문자열과 ' ' 공간을 사용하면 만 추가하여 할 수 있습니다. trim(), 아래 코드와 같은 것 :

String.prototype.isEmpty = String.prototype.isEmpty || function() {
   return !(!!this.trim().length);
}

그리고 당신은 이것을 이런 식으로 부를 수 있습니다 :

''.isEmpty(); //return true
'alireza'.isEmpty(); //return false
function tell()
{
var pass = document.getElementById('pasword').value;
var plen = pass.length;

now you can check if your string is empty as like 
if(plen==0)
{
         alert('empty');
}
else
{
   alert('you entered something');
}
}


<input type='text' id='pasword' />

이것은 또한 필드가 비어 있는지 확인하는 일반적인 방법입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top