JavaScript에서 빈/und 정의/null 문자열을 확인하는 방법은 무엇입니까?
-
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;
}
}
조금 과도합니다.
- 확인하십시오
var a;
존재하다 트림
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' />
이것은 또한 필드가 비어 있는지 확인하는 일반적인 방법입니다.