Kaip patikrinti tuščią eilutę / undefined / null javascript?

Mačiau šį srautą , bet nematau konkrečių „JavaScript“ pavyzdžių. Ar yra paprastas string.Empty galima javascript, ar tai tiesiog tikrina "" ?

2292
30 сент. casademora nustatė 30 sep . 2008-09-30 20:17 '08 at 8:17 pm 2008-09-30 20:17
@ 40 atsakymų
  • 1
  • 2

Jei tik norite patikrinti, ar yra kokių nors vertybių, galite tai padaryti

 if (strValue) { //do something } 

Jei reikia tiksliai patikrinti tuščią eilutę, kurios vertė yra nulinė, manau, kad tikrinimas prieš "" yra geriausias pasirinkimas naudojant === operatorių (kad žinotumėte, kad tai iš esmės yra eilutė, kurią lyginate).

 if (strValue === "") { //... } 
2905
30 сент. Atsakymą pateikė bdukes 30 rugsėjis 2008-09-30 20:20 '08 8:20 pm 2008-09-30 20:20

Jei norite patikrinti, ar eilutė yra tuščia, nulinė ar neapibrėžta, naudoju:

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

Jei norite patikrinti tuščią eilutę, nulinę ar neapibrėžtą, naudoju:

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

Norėdami patikrinti, ar eilutė yra tuščia, arba yra tik tarpas:

 String.prototype.isEmpty = function() { return (this.length === 0 || !this.trim()); }; 
942
16 июля '10 в 4:45 2010-07-16 04:45 atsakymą pateikė Jano González , liepos 16 d., 10 val.

Visa tai yra gera, bet ji bus dar geriau. naudoti operatorių !! (ne).

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

arba liejimo tipas:

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

Abi atlieka tą pačią funkciją, tipas perduodamas kintamajam boolean'e, kur str yra kintamasis.
Grąžina false null,undefined,0,000,"",false .
Grąžina eilutę „0“ ir „“.

241
30 марта '11 в 16:34 2011-03-30 16:34 atsakymas duotas karthick.sk kovo 30 d. 11 val. 16:34 2011-03-30 16:34

Jei reikia įsitikinti, kad eilutė yra ne tik tuščia negalioja (manau, kad tai yra forma, kad patikrintumėte formą), turite atlikti pakeitimus erdvėse.

 if(str.replace(/\s/g,"") == ""){ } 
94
01 окт. Sugendran atsakymas, pateiktas spalio 01 d 2008-10-01 02:08 '08 at 2:08 am 2008-10-01 02:08

Artimiausias dalykas, kurį galite pasiekti str.Empty (su sąlyga, kad str yra eilutė):

 if (!str.length) { ... 
83
30 сент. Atsakymas pateikiamas Ates Goral 30 sep. 2008-09-30 22:17 '08 10:17 val. 2008-09-30 22:17

Naudoju:

51
09 июля '10 в 21:52 2010-07-09 21:52 atsakymas pateikiamas Jet 09 liepos 10 d. 21:52 2010-07-09 21:52

Pabandykite:

 if (str  str.trim().length) { //... } 
27
09 янв. atsakymas pateikiamas Yang Dong 09 jan. 2013-01-09 05:54 '13, 5:54, 2013-01-09 05:54

Funkcija:

 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“ sistemoje nenaudokite linijos pertraukos po return ;

26
27 февр. Atsakymą pateikė T.Todua , vasario 27 d. 2014-02-27 23:31 '14, 23:31, 2014-02-27 23:31
 var s; // undefined var s = ""; // "" s.length // 0 

Niekas neatitinka tuščios eilutės javascript. Patikrinkite pagal length (jei žinote, kad var visada bus eilutė) arba prieš ""

25
30 сент. atsakymas pateikiamas 30 rugsėjis 2008-09-30 20:42 '08 at 8:42 pm 2008-09-30 20:42

Aš nerimautu pernelyg daug veiksmingiausio veiksmingo metodo. Naudokite tai, kas yra aiškiausia jūsų ketinimui. Man tai paprastai yra strVar == "" .

EDIT: už komentarą iš Konstantino , jei strVar gali kažkaip užbaigti sveikojo skaičiaus reikšmę 0, tai tikrai bus viena iš šių situacijų.

24
30 сент. Chris Noe atsakymas rugsėjo 30 d 2008-09-30 20:20 '08 8:20 pm 2008-09-30 20:20

Galite naudoti lodash : _.isEmpty (vertė).

Jis apima daugelį atvejų, pvz., {} , '' , null , undefined ir kt.

Bet jis visada grąžinamas trueNumber type Javascript“. Primityvūs duomenų tipai, tokie kaip _.isEmpty(10) arba _.isEmpty(Number.MAX_VALUE) true .

23
17 авг. Atsakymas pateikiamas Moshii 17 d. 2017-08-17 09:51 '17 at 9:51 am 2017-08-17 09:51

Taip pat galite naudoti įprastas išraiškas:

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

Tikrinama, ar linijos yra tuščios arba užpildytos tarpais.

18
31 мая '10 в 17:57 2010-05-31 17:57 atsakymas pateikiamas gegužės 31 d. 10 d. 17:57 2010-05-31 17:57

Daug atsakymų ir daug skirtingų funkcijų!

Be abejo, greitas ir paprastas įgyvendinimas, nugalėtojas yra: if (!str.length) {...}

Tačiau, kaip ir daugelis kitų pavyzdžių. Geriausias šio metodo metodas, siūlau:

15
31 марта '16 в 11:29 2016-03-31 11:29 atsakymas duotas kovo 31 d. 16 val. 11:29 2016-03-31 11:29
  • patikrinti var a; egzistuoja
  • redaguokite false spaces , tada patikrinkite emptiness

     if ((a) { // if variable a is not empty do this } 
14
24 февр. Timothy Nwanwene atsakymas, pateiktas vasario 24 d. 2015-02-24 18:38 '15, 18:38, 2015-02-24 18:38

Be to, jei manote, kad užpildyta erdvė, eilutė yra „tuščia“. Galite tai patikrinti su šia įprastine išraiška:

 !/\S/.test(string); // Returns true if blank. 
13
15 мая '13 в 17:55 2013-05-15 17:55 atsakymas pateikiamas Wab_Z 15 gegužės 13 d. 17:55 2013-05-15 17:55

Aš paprastai naudoju kažką panašaus,

 if (!str.length) { //do some thing } 
11
09 авг. vartotojo2086641 atsakymas 09 rug . 2013-08-09 13:10 '13, 13:10, 2013-08-09 13:10

Jei reikia aptikti ne tik tuščias, bet ir tuščias eilutes, prie atsakymo pridėsiu „Goral“:

 function isEmpty(s){ return !s.length; } function isBlank(s){ return isEmpty(s.trim()); } 
9
01 окт. Josef.B atsakymas, pateiktas spalio 01 d 2014-10-01 09:55 '14 at 9:55 2014-10-01 09:55

Nepastebėjau atsakymo, kuriame būtų atsižvelgta į tuščių simbolių eilutėje galimybę. Pavyzdžiui, jei turime eilutę su nuliniu simboliu:

 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 

Jei norite patikrinti jo negaliojimą, galite tai padaryti:

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

Jis veikia tuščią eilutę ir tuščią eilutę ir yra prieinama visoms linijoms. Be to, jis gali būti išplėstas, kad jame būtų kitų „JavaScript“ tarpų arba tarpų (pvz., Nepanaudota erdvė, baito ženklas, eilutės / pastraipos ribotuvas ir tt).

9
31 июля '12 в 17:05 2012-07-31 17:05 atsakymą pateikė Bikush liepos 12 d. 12 val

Visi šie atsakymai yra geri.

Bet aš negaliu būti tikras, kad kintamasis yra eilutė, jame nėra tik tarpų (tai man svarbu) ir gali būti „0“ (eilutė).

Mano versija:

 function empty(str){ return !str || !/[^\s]+/.test(str); } empty(null); // true empty(0); // true empty(7); // false empty(""); // true empty("0"); // false empty(" "); // true 

Pavyzdys jsfiddle .

8
08 мая '13 в 20:15 2013-05-08 20:15 atsakymą Andronas pateikė gegužės 08 d. 13 d. 20:15 2013-05-08 20:15

Nepaisydami eilučių su tarpais, galite tai naudoti, jei norite patikrinti nulį, tuščią ir neapibrėžtą:

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

Trumpai tariant, jis veikia neapibrėžtoms savybėms, nors jis nėra labiausiai skaitomas.

7
19 июля '12 в 5:00 2012-07-19 05:00 atsakymas pateikiamas „ mricci“ liepos 19 d., 12 val., 5:00, 2012-07-19 05:00

Naudoju derinį, greičiausiai atliekami greičiausiai patikrinimai.

 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); } 
7
01 июня '11 в 18:40 2011-06-01 18:40 atsakymas bus duotas bus birželio 1 d. 11 d. 6:40 2011-06-01 18:40

Tuo tarpu mes galime turėti vieną funkciją, kuri tikrina visus „tuščius“ kaip nulinius, neapibrėžtus, '', '', {}, [] . Taigi aš tiesiog parašiau.

 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; } } 

Naudojimo atvejai ir rezultatai.

 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 
7
12 марта '18 в 11:48 2018-03-12 11:48 atsakymas duotas Imranui kovo 12 d., 18 val. 11:48 2018-03-12 11:48

patikrinti, ar eilutė yra visiškai tuščia:

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

patikrinti, ar tai yra tuščia eilutė ARBA loginis ekvivalentas be vertės (nulio, neapibrėžtas, 0, NaN, false, ...):

 if(!val)... 
7
02 июня '17 в 11:33 2017-06-02 11:33 atsakymą pateikė Luca C. Birželio 2 d. 17 d. 11:33 2017-06-02 11:33

Aš atlikdavau tam tikrą tyrimą, kas atsitiks, jei bandymo funkcijai perduosite netiesinę ir tuščią / nulinę funkciją. Kaip daugelis žino, (0 == "") yra teisinga javascript'e, bet kadangi 0 yra vertė, o ne tuščia ar nulinė, galite ją patikrinti.

Toliau pateiktos dvi funkcijos atitinka tik neapibrėžtas, nulinės, tuščios / tuščios vietos ir klaidingas reikšmes visai kitai, pvz., Numerius, loginius, objektus, išraiškas ir kt.

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

Yra sudėtingesnių pavyzdžių, tačiau jie yra paprasti ir užtikrina nuoseklius rezultatus. Nereikia išbandyti neapibrėžto, nes jis įtrauktas į (vertė == null). Taip pat galite imituoti C # elgesį, pridėdami juos prie eilutės taip:

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

Jūs nenorite įdėti to į Styginių prototipą, nes jei eilutės klasės egzempliorius yra nulinis, tai bus neteisinga:

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

Aš išbandžiau šią masyvų vertę. Jei turite abejonių, galite ją programuoti, kad patikrintumėte jo funkcijas.

 // 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; } }] ]; 
7
14 мая '13 в 13:18 2013-05-14 13:18 atsakymą pateikė JHM gegužės 13 d., 13 val. 13:18 2013-05-14 13:18

Nėra „ isEmpty() metodo, turėtumėte patikrinti tipą ir ilgį:

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

Tipo patikra yra būtina, kad būtų išvengta vykdymo klaidų, jei test yra undefined arba null .

6
05 нояб. atsakymą pateikė Agustí Sánchez, lapkričio 5 d. 2016-11-05 01:28 '16 at 1:28 2016-11-05 01:28

Išbandykite

 str.value.length == 0 
6
22 июля '10 в 18:30 2010-07-22 18:30 atsakymą pateikė „ Doug “ liepos 22 d. 10 val. 18:30 2010-07-22 18:30

Paprastai naudoju kažką panašaus

 if (str == "") { //Do Something } else { //Do Something Else } 
6
15 февр. atsakymą pateikė jmc734 15 vasaris. 2010-02-15 05:46 '10, 5:46 val. 2010-02-15 05:46

Negalima manyti, kad kintamasis, kurį bandote, yra eilutė. Negalima manyti, kad jei šis varis turi ilgį, tai yra eilutė.

Faktas yra tai, kad atidžiai pagalvokite apie tai, ką jūsų paraiška turėtų padaryti ir priimti. Kurkite patikimą.

Jei jūsų metodas / funkcija turėtų tvarkyti ne tuščią eilutę, patikrinkite, ar argumentas yra tuščias eilutė, ir neatlikite „triukų“.

Kaip pavyzdys, kas sprogs, jei atliksite keletą patarimų, tai nėra atsargūs.

 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'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' 

Taigi, norėčiau laikytis

 if (myVar === '') ...if (myVar === '') ... 
5
15 июля '13 в 13:55 2013-07-15 13:55 atsakymas duotas Amida liepos 15 d. 13:55 2013-07-15 13:55
 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' /> 

Tai taip pat yra bendras būdas patikrinti, ar laukas yra tuščias.

4
06 авг. atsakymas, kurį pateikė Muhammad Salman rugpjūčio 06 d 2010-08-06 19:28 '10, 19:28, 2010-08-06 19:28

Galite patikrinti šiuos metodus ir suprasti skirtumą.

4
30 нояб. Atsakymas pateikiamas KARTHIKEYAN.A . 2017-11-30 09:26 '17 at 9:26 2017-11-30 09:26
  • 1
  • 2

Kiti klausimai apie „ žymes yra arba Užduoti klausimą