이 질문 을 보았지만 JavaScript 특정 예를 보지 못했습니다. JavaScript에서 사용할 수 있는 간단한 string.Empty
""
를 확인하는 경우입니까?
질문자 :casademora
진실한 값 이 있는지 확인하려는 경우 다음을 수행할 수 있습니다.
if (strValue) { //do something }
null에 대한 빈 문자열을 구체적으로 확인해야 하는 경우 ===
연산자를 ""
확인하는 것이 가장 좋은 방법이라고 생각합니다. ).
if (strValue === "") { //... }
bdukes
변수가 거짓 인지 또는 길이 속성이 0과 같은지 확인하기 위해(문자열의 경우 비어 있음을 의미함) 다음을 사용합니다.
function isEmpty(str) { return (!str || str.length === 0 ); }
length
속성을 가진 유일한 변수는 아니며 배열에도 있습니다.)
변수가 false인지 또는 문자열에 공백만 포함되어 있는지 또는 비어 있는지 확인하기 위해 다음을 사용합니다.
function isBlank(str) { return (!str || /^\s*$/.test(str)); }
원하는 경우 다음 String
프로토타입을 원숭이 패치할 수 있습니다.
String.prototype.isEmpty = function() { // This doesn't work the same way as the isEmpty function used // in the first example, it will return true for strings containing only whitespace return (this.length === 0 || !this.trim()); }; console.log("example".isEmpty());
어떤 이유로든 내장 유형의 기존 구조에 의존하는 코드를 깨뜨릴 수 있기 때문에 기본 제공 유형을 원숭이 패치하는 것은 논란의 여지가 있습니다.
Jano González
이전의 모든 답변이 좋지만 이것은 더 좋을 것입니다. 이중 NOT 연산자( !!
) 사용:
if (!!str) { // Some code here }
또는 유형 캐스팅을 사용하십시오.
if (Boolean(str)) { // Code here }
둘 다 같은 기능을 합니다. 변수를 부울로 유형 변환합니다. str
null
,undefined
,0
,000
,""
,false
대해false
를 반환합니다."0"
및" "
와 같은 문자열 포함) 이외의 모든 문자열 값에 대해 true를 반환true
karthick.sk
str.Empty
(str이 String이라는 전제 조건)에 가장 가까운 것은 다음과 같습니다.
if (!str.length) { ...
Ates Goral
문자열이 단순한 빈 공간이 아닌지 확인해야 하는 경우(양식 유효성 검사를 위한 것으로 가정함) 공백을 교체해야 합니다.
if(str.replace(/\s/g,"") == ""){ }
Sugendran
나는 사용한다:
function empty(e) { switch (e) { case "": case 0: case "0": case null: case false: case typeof(e) == "undefined": return true; default: return false; } } empty(null) // true empty(0) // true empty(7) // false empty("") // true empty((function() { return "" })) // false
Jet
lodash : _.isEmpty(value)를 사용할 수 있습니다.
{}
, ''
, null
, undefined
등과 같은 많은 경우를 다룹니다.
그러나 _.isEmpty(10)
또는 _.isEmpty(Number.MAX_VALUE)
와 같은 JavaScript 기본 데이터 유형 Number
유형에 대해 true
를 반환합니다. 둘 다 true
Moshi
성능
18개의 선택한 솔루션에 대해 macOS v10.13.6 (High Sierra)에서 테스트를 수행합니다. 솔루션은 아래 스니펫에 나와 있는 것과 같이 약간 다르게 작동합니다(코너 케이스 입력 데이터의 경우).
결론
-
!str
,==
,===
및length
기반으로 하는 간단한 솔루션은 모든 브라우저(A,B,C,G,I,J)에서 빠릅니다. - 정규식(
test
,replace
) 및 charAt 기반 솔루션은 모든 브라우저(H,L,M,P)에서 가장 느charAt
- 가장 빠른 것으로 표시된 솔루션은 한 번의 테스트 실행에서만 가장 빠르지만 많은 실행에서 '빠른' 솔루션 그룹 내에서 변경됩니다.
세부
아래 스니펫에서 다른 입력 매개변수를 사용하여 선택한 18개 방법의 결과를 비교합니다.
-
""
"a"
" "
- 빈 문자열, 문자가 있는 문자열, 공백이 있는 문자열 -
[]
{}
f
- 배열, 객체 및 함수 -
0
1
NaN
Infinity
- 숫자 -
true
false
- 부울 -
null
undefined
테스트된 모든 방법이 모든 입력 사례를 지원하는 것은 아닙니다.
function A(str) { let r=1; if (!str) r=0; return r; } function B(str) { let r=1; if (str == "") r=0; return r; } function C(str) { let r=1; if (str === "") r=0; return r; } function D(str) { let r=1; if(!str || 0 === str.length) r=0; return r; } function E(str) { let r=1; if(!str || /^\s*$/.test(str)) r=0; return r; } function F(str) { let r=1; if(!Boolean(str)) r=0; return r; } function G(str) { let r=1; if(! ((typeof str != 'undefined') && str) ) r=0; return r; } function H(str) { let r=1; if(!/\S/.test(str)) r=0; return r; } function I(str) { let r=1; if (!str.length) r=0; return r; } function J(str) { let r=1; if(str.length <= 0) r=0; return r; } function K(str) { let r=1; if(str.length === 0 || !str.trim()) r=0; return r; } function L(str) { let r=1; if ( str.replace(/\s/g,"") == "") r=0; return r; } function M(str) { let r=1; if((/^\s*$/).test(str)) r=0; return r; } function N(str) { let r=1; if(!str || !str.trim().length) r=0; return r; } function O(str) { let r=1; if(!str || !str.trim()) r=0; return r; } function P(str) { let r=1; if(!str.charAt(0)) r=0; return r; } function Q(str) { let r=1; if(!str || (str.trim()=='')) r=0; return r; } function R(str) { let r=1; if (typeof str == 'undefined' || !str || str.length === 0 || str === "" || !/[^\s]/.test(str) || /^\s*$/.test(str) || str.replace(/\s/g,"") === "") r=0; return r; } // --- TEST --- console.log( ' "" "a" " " [] {} 0 1 NaN Infinity f true false null undefined '); let log1 = (s,f)=> console.log(`${s}: ${f("")} ${f("a")} ${f(" ")} ${f([])} ${f({})} ${f(0)} ${f(1)} ${f(NaN)} ${f(Infinity)} ${f(f)} ${f(true)} ${f(false)} ${f(null)} ${f(undefined)}`); let log2 = (s,f)=> console.log(`${s}: ${f("")} ${f("a")} ${f(" ")} ${f([])} ${f({})} ${f(0)} ${f(1)} ${f(NaN)} ${f(Infinity)} ${f(f)} ${f(true)} ${f(false)}`); let log3 = (s,f)=> console.log(`${s}: ${f("")} ${f("a")} ${f(" ")}`); log1('A', A); log1('B', B); log1('C', C); log1('D', D); log1('E', E); log1('F', F); log1('G', G); log1('H', H); log2('I', I); log2('J', J); log3('K', K); log3('L', L); log3('M', M); log3('N', N); log3('O', O); log3('P', P); log3('Q', Q); log3('R', R);
그런 다음 모든 방법에 대해 브라우저 Chrome v78.0.0, Safari v13.0.4 및 Firefox v71.0.0에 str = ""
을 수행합니다. 여기에서 컴퓨터에서 테스트를 실행할 수 있습니다.
Kamil Kiełczewski
매우 일반적인 "올인원" 기능( 권장하지 않음 ):
function is_empty(x) { return ( //don't put newline after return (typeof x == 'undefined') || (x == null) || (x == false) //same as: !x || (x.length == 0) || (x == 0) // note this line, you might not need this. || (x == "") || (x.replace(/\s/g,"") == "") || (!/[^\s]/.test(x)) || (/^\s*$/.test(x)) ); }
그러나 대상 변수가 특정 유형(예: 문자열, 숫자 또는 개체?)이어야 하므로 사용하지 않는 것이 좋습니다. 따라서 해당 변수와 관련된 검사를 적용하십시오.
T.Todua
var s; // undefined var s = ""; // "" s.length // 0
JavaScript에는 빈 문자열을 나타내는 것이 없습니다. length
(var가 항상 문자열임을 알고 있는 경우) 또는 ""
cllpse
노력하다:
if (str && str.trim().length) { //... }
Yang Dong
나는 가장 효율적인 방법에 대해 너무 많이 걱정하지 않을 것입니다. 당신의 의도에 가장 분명한 것을 사용하십시오. 나에게 그것은 일반적으로 strVar == ""
입니다.
Constantin 의 의견에 따르면 strVar가 정수 0 값을 포함하는 방법이 될 수 있다면 실제로 의도를 명확히 하는 상황 중 하나가 될 것입니다.
Chris Noe
정규 표현식을 사용할 수도 있습니다.
if((/^\s*$/).test(str)) { }
비어 있거나 공백으로 채워진 문자열을 확인합니다.
oem
많은 답변과 다양한 가능성!
빠르고 간단한 구현을 위한 의심의 여지 없이 승자는 다음과 같습니다. 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; }
좀 과한 거 알아.
tfont
var a;
확인하십시오. 존재하다false spaces
emptiness
있는지 테스트합니다.if ((a)&&(a.trim()!='')) { // if variable a is not empty do this }
Timothy Nwanwene
또한 공백으로 채워진 문자열을 "비어 있음"으로 간주하는 경우.
다음 정규식으로 테스트할 수 있습니다.
!/\S/.test(string); // Returns true if blank.
Wab_Z
평소에 이렇게 사용하는데,
if (!str.length) { // Do something }
user2086641
빈 문자열뿐만 아니라 빈 문자열도 감지해야 하는 경우 Goral의 답변에 다음을 추가하겠습니다.
function isEmpty(s){ return !s.length; } function isBlank(s){ return isEmpty(s.trim()); }
Josef.B
로 시작:
return (!value || value == undefined || value == "" || value.length == 0);
마지막 조건을 보면 value == ""이면 길이 가 0이어야 합니다. 따라서 삭제합니다.
return (!value || value == undefined || value == "");
하지만 기다려! JavaScript에서 빈 문자열은 false입니다. 따라서 드롭 값 == "":
return (!value || value == undefined);
그리고 !undefined는 true이므로 검사가 필요하지 않습니다. 그래서 우리는 다음을 가지고 있습니다:
return (!value);
그리고 우리는 괄호가 필요하지 않습니다:
return !value
Abhishek Luthra
나는 조합을 사용하고 가장 빠른 검사가 먼저입니다.
function isBlank(pString) { if (!pString) { 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); }
Will
문자열에서 null 문자의 가능성을 고려한 답변을 보지 못했습니다. 예를 들어 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
null 여부를 테스트하려면 다음과 같이 할 수 있습니다.
String.prototype.isNull = function(){ return Boolean(this.match(/^[\0]*$/)); } ... "\0".isNull() // true
null 문자열과 빈 문자열에서 작동하며 모든 문자열에 액세스할 수 있습니다. 또한 다른 JavaScript 빈 또는 공백 문자(즉, 줄 바꿈하지 않는 공백, 바이트 순서 표시, 줄/단락 구분 기호 등)를 포함하도록 확장될 수 있습니다.
Bikush
한편 우리는 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
Imran Ahmad
현재로서는 string.empty와 같이 문자열이 비어 있는지 여부를 확인하는 직접적인 방법이 없습니다. 그러나 코드에서 다음과 같은 빈 문자열에 대해 래퍼 검사를 사용할 수 있습니다.
// considering the variable in which your string is saved is named str. if (str && str.length>0) { // Your code here which you want to run if the string is not empty. }
이것을 사용하여 문자열이 정의되지 않았거나 null이 아닌지도 확인할 수 있습니다. undefined, null 및 empty는 세 가지 다른 것임을 기억하십시오.
Harshit Agarwal
나는 여기에 좋은 대답을 보지 못했습니다 (적어도 나에게 맞는 대답은 아닙니다)
그래서 나는 스스로 대답하기로 결정했다.
value === undefined || value === null || value === "";
정의되지 않았는지 확인을 시작해야 합니다. 그렇지 않으면 메서드가 폭발할 수 있으며 null인지 또는 빈 문자열과 같은지 확인할 수 있습니다.
당신은 가질 수 없습니다 !! 또는 if(value)
0
을 선택하면 거짓 답을 줄 것이기 때문입니다(0은 거짓임).
즉, 다음과 같은 방법으로 마무리합니다.
public static isEmpty(value: any): boolean { return value === undefined || value === null || value === ""; }
추신 : typeof 를 확인할 필요가 없습니다 . 메소드에 들어가기 전에도 폭발하고 던질 것이기 때문입니다.
Davi Daniel Siepmann
이 모든 답변이 좋습니다.
그러나 변수가 문자열이고 공백만 포함하지 않고(이것은 나에게 중요함) '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의 샘플.
Andron
문자열과 비어 있지 않은/널 값을 테스터 함수에 전달하면 어떻게 되는지에 대해 조사했습니다. 많은 사람들이 알다시피 JavaScript에서 (0 == "")는 true이지만 0은 값이고 비어 있거나 null이 아니므로 테스트할 수 있습니다.
다음 두 함수는 정의되지 않은 null, 빈/공백 값에 대해서만 true를 반환하고 숫자, 부울, 개체, 표현식 등과 같은 다른 모든 것에 대해 false를 반환합니다.
function IsNullOrEmpty(value) { return (value == null || value === ""); } function IsNullOrWhiteSpace(value) { return (value == null || !/\S/.test(value)); }
더 복잡한 예가 있지만 이들은 간단하고 일관된 결과를 제공합니다. (value == null) 검사에 포함되어 있으므로 undefined에 대해 테스트할 필요가 없습니다. 다음과 같이 String에 추가하여 C# 동작을 모방할 수도 있습니다.
String.IsNullOrEmpty = function (value) { ... }
String-class의 인스턴스가 null이면 오류가 발생하기 때문에 Strings 프로토타입에 넣고 싶지 않습니다.
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 JavaScript ['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; } }] ];
JHM
정확히 빈 문자열인지 확인하려면:
if(val==="")...
빈 문자열인지 또는 값 없음(null, undefined, 0, NaN, false, ...)에 대한 논리적 동등물인지 확인하려면:
if(!val)...
Luca C.
null 병합 연산자로 공백 제거:
if (!str?.trim()) { // do something... }
sean
단순히 빈 문자열을 확인하는 경우
if (str.length){ //do something }
수표에 null 및 undefined도 포함하려면 간단히
if (Boolean(str)){ //this will be true when the str is not empty nor null nor undefined }
Ibrahim shamma
isEmpty()
메서드가 없으므로 유형과 길이를 확인해야 합니다.
if (typeof test === 'string' && test.length === 0){ ...
test
가 undefined
또는 null
때 런타임 오류를 피하기 위해 유형 검사가 필요합니다.
Agustí Sánchez
출처 : http:www.stackoverflow.com/questions/154059/how-can-i-check-for-an-empty-undefined-null-string-in-javascript
'etc. > StackOverFlow' 카테고리의 다른 글
Java에서 public, protected, package-private 및 private의 차이점은 무엇입니까? (0) | 2021.10.07 |
---|---|
문자열 속성 값으로 객체 배열 정렬 (0) | 2021.10.07 |
Android 에뮬레이터가 왜 그렇게 느린가요? Android 에뮬레이터의 속도를 높이려면 어떻게 해야 합니까? (0) | 2021.10.07 |
CSS 부모 선택자가 있습니까? Is there a CSS parent selector ? (0) | 2021.10.07 |
Git 버전 관리를 사용하여 파일의 변경 내역 보기 (0) | 2021.10.06 |