मैंने यह प्रश्न देखा , लेकिन मैंने एक जावास्क्रिप्ट विशिष्ट उदाहरण नहीं देखा। क्या string.Empty
जावास्क्रिप्ट में एक सरल उपलब्ध है, या यह सिर्फ जांच का मामला है ""
?
मैंने यह प्रश्न देखा , लेकिन मैंने एक जावास्क्रिप्ट विशिष्ट उदाहरण नहीं देखा। क्या string.Empty
जावास्क्रिप्ट में एक सरल उपलब्ध है, या यह सिर्फ जांच का मामला है ""
?
जवाबों:
यदि आप यह जांचना चाहते हैं कि क्या कोई मूल्य है, तो आप कर सकते हैं
if (strValue) {
//do something
}
यदि आपको विशेष रूप से रिक्त स्ट्रिंग के लिए नल से अधिक की जांच करने की आवश्यकता है, तो मुझे लगता ""
है कि ===
ऑपरेटर के उपयोग से जाँच करना आपके लिए सबसे अच्छा शर्त है (ताकि आपको पता चले कि यह वास्तव में, एक स्ट्रिंग है जिसकी आप तुलना कर रहे हैं)।
if (strValue === "") {
//...
}
=== ''
बनाम .length
कोई भी सुधार नहीं दिखा (और .length
केवल काम का उपयोग करके यदि आप मान सकते हैं कि आपके पास एक स्ट्रिंग है)
यह जांचने के लिए कि क्या कोई स्ट्रिंग खाली है, अशक्त या अपरिभाषित है मैं उपयोग करता हूं:
function isEmpty(str) {
return (!str || 0 === str.length);
}
यह जांचने के लिए कि क्या कोई स्ट्रिंग रिक्त है, अशक्त या अपरिभाषित है मैं उपयोग करता हूं:
function isBlank(str) {
return (!str || /^\s*$/.test(str));
}
यह जाँचने के लिए कि क्या कोई स्ट्रिंग रिक्त है या केवल श्वेत-स्थान है:
String.prototype.isEmpty = function() {
return (this.length === 0 || !this.trim());
};
if (variable == constant value)
और यदि आप '=' भूल जाते हैं, तो आप परीक्षण के बजाय चर को निरंतर मान दे रहे हैं। कोड तब भी काम करेगा जब आप एक में चर को असाइन कर सकते हैं। तो इस स्थिति को लिखने का एक सुरक्षित तरीका निरंतर मूल्य और चर को उलटना है। इस तरह जब आप अपने कोड का परीक्षण करते हैं तो आपको एक त्रुटि दिखाई देगी (असाइनमेंट में अमान्य लेफ़-हैंड साइड)। आप शर्तों में असाइनमेंट को अस्वीकार करने और जब आप एक लिखते हैं तो चेतावनी दी जा सकती है।
/^\s*$/.test(str)
वास्तव में पठनीय नहीं है - शायद सरल कोड या रेगेक्स का उपयोग करके रिक्त स्थान को हटाना बेहतर होगा? देखें stackoverflow.com/questions/6623231/… और इसके अलावा stackoverflow.com/questions/10800355/…
if blue is the sky
। Dodgycoder.net/2011/11/yoda-conditions-pokemon-exception.html
पिछले सभी उत्तर अच्छे हैं, लेकिन यह और भी बेहतर होगा। !!
( नहीं ) ऑपरेटर का उपयोग करें ।
if(!!str){
// Some code here
}
या टाइप कास्टिंग का उपयोग करें:
if(Boolean(str)){
// Code here
}
दोनों एक ही कार्य करते हैं। चर को बुलियन में टाइप करें, जहां str
एक चर है।
इसके लिए लौटता false
है null,undefined,0,000,"",false
।
यह true
स्ट्रिंग "0" और व्हॉट्सएप "" पर लौटता है ।
if(str)
और के व्यवहार में कोई अंतर है if(!!str)
?
var any = (!!str1 && !!str2 && !!str3)
हैंडलिंग अगर वहाँ भी एक संख्या है
!!str.trim()
यह सुनिश्चित करने के लिए कि स्ट्रिंग केवल व्हाट्सएप से नहीं बनी है।
Boolean(str)
बहुत अधिक पठनीय और कम "wtfish" है।
यदि आपको यह सुनिश्चित करने की आवश्यकता है कि स्ट्रिंग केवल रिक्त स्थानों का एक गुच्छा नहीं है (मैं यह मान रहा हूं कि यह फॉर्म सत्यापन के लिए है) आपको रिक्त स्थान पर एक प्रतिस्थापन करने की आवश्यकता है।
if(str.replace(/\s/g,"") == ""){
}
if(str.match(/\S/g)){}
str.match(/\S/)
var trimLeft = /^\s+/, trimRight = /\s+$/;
मैं उपयोग करता हूं:
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
typeof
में switch
मेरे लिए काम नहीं किया। मैंने एक if (typeof e == "undefined")
परीक्षण जोड़ा और वह काम करता है। क्यों?
case undefined:
इसके बजाय उपयोग कर सकते हैं case typeof(e) == "undefined":
?
आप लॉश का उपयोग कर सकते हैं : _.isEmpty (मान)।
ऐसा लगता है कि मामलों का एक बहुत शामिल किया गया है {}
, ''
, null
, undefined
, आदि
लेकिन यह हमेशा रिटर्न true
के लिए Number
के प्रकार जावास्क्रिप्ट आदिम डेटा प्रकार की तरह _.isEmpty(10)
या _.isEmpty(Number.MAX_VALUE)
दोनों रिटर्न true
।
_.isEmpty(" "); // => false
" "
खाली नहीं है। _.isEmpty("");
सच लौटाता है।
समारोह:
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))
);
}
पुनश्च: जावास्क्रिप्ट में, लाइन ब्रेक के बाद का उपयोग न करें return
;
if
बयान में रखने के लिए कोई मतलब नहीं है ।
प्रयत्न:
if (str && str.trim().length) {
//...
}
str.trim().length
str.trim()
अपने स्वयं के परीक्षण के परिणाम के अनुसार, लगभग 1% से अधिक तेज़ी से करेगा ।
if (!str) { ... }
मैं सबसे कुशल विधि के बारे में बहुत ज्यादा चिंता नहीं करूंगा । अपने इरादे के लिए सबसे स्पष्ट है का उपयोग करें। मेरे लिए यह आमतौर पर हैstrVar == ""
।
कॉन्स्टेंटिन की टिप्पणी के अनुसार , अगर strVar कुछ ऐसा कर सकता है जिसमें पूर्णांक 0 मान शामिल हो, तो यह वास्तव में उन इरादों को स्पष्ट करने वाली स्थितियों में से एक होगा।
===
करना बेहतर होगा। strVar
खाली स्ट्रिंग होने पर ही यह सही होता है।
बहुत सारे उत्तर, और बहुत सारी संभावनाएं!
विजेता के त्वरित और सरल कार्यान्वयन के लिए संदेह के बिना: 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;
}
}
थोड़ा बहुत, मुझे पता है।
str.length === 0
किसी भी फ़ंक्शन के लिए सही है जो कोई औपचारिक पैरामीटर नहीं है।
var a;
मौजूद हैंfalse spaces
मूल्य में ट्रिम करें , फिर परीक्षण करेंemptiness
if ((a)&&(a.trim()!=''))
{
// if variable a is not empty do this
}
मैं 18 चुने हुए समाधानों के लिए macOS v10.13.6 (हाई सिएरा) पर परीक्षण करता हूं । समाधान थोड़ा अलग है (कोने-केस इनपुट डेटा के लिए) जो नीचे दिए गए स्निपेट में प्रस्तुत किया गया था।
निष्कर्ष
!str
, ==
, ===
और length
सभी ब्राउज़रों के लिए तेजी से कर रहे हैं (ए, बी, सी, जी, आई, जे)test
, replace
) पर आधारित समाधान और charAt
सभी ब्राउज़रों (एच, एल, एम, पी) के लिए सबसे धीमे हैं।नीचे दिए गए स्निपेट में मैं विभिन्न इनपुट मापदंडों का उपयोग करके चुने हुए 18 तरीकों के परिणामों की तुलना करता हूं
""
"a"
" "
- रिक्त स्ट्रिंग, अक्षर के साथ स्ट्रिंग और अंतरिक्ष के साथ स्ट्रिंग[]
{}
f
- सरणी, वस्तु और कार्य0
1
NaN
Infinity
- संख्याtrue
false
- बुलियनnull
undefined
सभी परीक्षण किए गए तरीके सभी इनपुट मामलों का समर्थन नहीं करते हैं।
और फिर सभी तरीकों के लिए मैं str = ""
ब्राउज़र क्रोम v78.0.0, सफारी v13.0.4, और फ़ायरफ़ॉक्स v71.0.0 के लिए स्पीड टेस्ट केस करता हूं - आप यहां अपनी मशीन पर परीक्षण चला सकते हैं
मैं आमतौर पर कुछ इस तरह का उपयोग करता हूं,
if (!str.length) {
// Do something
}
typeof variable != "undefined"
खाली होने से पहले जांच सकते हैं ।
मैंने एक उत्तर पर ध्यान नहीं दिया है जो एक स्ट्रिंग में अशक्त पात्रों की संभावना को ध्यान में रखता है। उदाहरण के लिए, यदि हमारे पास एक अशक्त वर्ण स्ट्रिंग है:
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
यह एक नल स्ट्रिंग पर और एक रिक्त स्ट्रिंग पर काम करता है और यह सभी तारों के लिए सुलभ है। इसके अलावा, इसे अन्य जावास्क्रिप्ट खाली या व्हाट्सएप वर्ण (यानी नॉनब्रेकिंग स्पेस, बाइट ऑर्डर मार्क, लाइन / पैराग्राफ विभाजक, आदि) से युक्त किया जा सकता है।
इस बीच हमारा एक कार्य हो सकता है जो अशक्त, अपरिभाषित, '', '', {}, [] जैसे सभी 'खाली' की जाँच करता है । इसलिए मैंने अभी यह लिखा है।
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
अब तक स्ट्रिंग की तरह कोई सीधी विधि नहीं है। यह जांचने के लिए कि स्ट्रिंग खाली है या नहीं। लेकिन आपके कोड में आप एक खाली स्ट्रिंग के लिए रैपर चेक का उपयोग कर सकते हैं जैसे:
// 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.
}
इसका उपयोग करके आप यह भी सुनिश्चित कर सकते हैं कि स्ट्रिंग अपरिभाषित या अशक्त नहीं है। याद रखें, अपरिभाषित, अशक्त और खाली तीन अलग-अलग चीजें हैं।
let rand = ()=>Math.random()
, तो rand && rand.length > 0)
गलत है, लेकिन स्पष्ट रूप से fn "खाली" नहीं है। यानी यह किसी भी फ़ंक्शन के लिए गलत है, जिसमें कोई प्रारूप पैरामीटर नहीं है।
Math.random()
एक नंबर देता है और एक स्ट्रिंग नहीं। और यह उत्तर तार के बारे में है। ;-)
ये सभी उत्तर अच्छे हैं।
लेकिन मुझे यकीन नहीं है कि चर एक स्ट्रिंग है, इसमें केवल रिक्त स्थान नहीं हैं (यह मेरे लिए महत्वपूर्ण है), और इसमें '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 पर नमूना ।
empty(0)
और empty(7)
उसी मूल्य को वापस करना चाहिए।
empty("0")
लौटना चाहिए false
(क्योंकि यह एक खाली स्ट्रिंग नहीं है), लेकिन empty(0)
वापस लौटना चाहिए true
क्योंकि यह खाली है :)
empty
इस मामले में एक भ्रामक नाम है।
empty
एक गलत और भ्रामक नाम है। यह दिलचस्प है कि PHP का एक खराब-नाम वाला empty
फ़ंक्शन भी है, लेकिन PHP की विफलताओं का जावास्क्रिप्ट के साथ कोई लेना-देना नहीं है।
मुझे यहां एक अच्छा जवाब नहीं मिला (कम से कम ऐसा जवाब नहीं जो मेरे लिए उपयुक्त हो)
इसलिए मैंने खुद को जवाब देने का फैसला किया:
value === undefined || value === null || value === "";
यदि यह अपरिभाषित है तो आपको जाँच शुरू करने की आवश्यकता है। अन्यथा आपकी विधि में विस्फोट हो सकता है, और फिर आप जांच सकते हैं कि यह शून्य के बराबर है या खाली स्ट्रिंग के बराबर है।
आपके पास नहीं हो सकता !! या केवल तभी if(value)
से जब आप जाँचते हैं 0
कि यह आपको एक गलत उत्तर देने वाला है (0 गलत है)।
उस के साथ, इसे एक विधि में लपेटो जैसे:
public static isEmpty(value: any): boolean {
return value === undefined || value === null || value === "";
}
पुनश्च: आपको टाइपोफ़ की जांच करने की आवश्यकता नहीं है , क्योंकि यह विधि में प्रवेश करने से पहले ही फट जाएगा और फेंक देगा
इसे इस्तेमाल करे
str.value.length == 0
"".value.length
एक त्रुटि का कारण होगा। यह होना चाहिएstr.length === 0
TypeError
हैं str
के बराबर है undefined
याnull
आप इसे जावास्क्रिप्ट में देशी स्ट्रिंग ऑब्जेक्ट में आसानी से जोड़ सकते हैं और इसे फिर से उपयोग
कर सकते हैं ... यदि आप खाली तारों की जांच करना चाहते हैं, तो कोड की तरह कुछ सरल आपके लिए काम कर सकता है :''
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
!(!!this.length)
केवल !this
(या !this.trim()
दूसरे विकल्प के लिए) करने के बजाय क्या लाभ है ? एक शून्य-लंबाई वाली स्ट्रिंग पहले से ही झूठी है, कोष्ठक बेमानी हैं, और इसे तीन बार नकारना बिल्कुल एक बार इसे नकारने के समान है।
यदि आप एक गैर-स्ट्रिंग और एक परीक्षक फ़ंक्शन के लिए गैर-रिक्त / शून्य मान पास करते हैं, तो मैंने कुछ शोध किया। जैसा कि बहुत से जानते हैं, (0 == "") जावास्क्रिप्ट में सच है, लेकिन चूंकि 0 एक मान है और खाली या शून्य नहीं है, आप इसके लिए परीक्षण करना चाह सकते हैं।
निम्नलिखित दो कार्य केवल अपरिभाषित, अशक्त, रिक्त / व्हाट्सएप मूल्यों के लिए सही हैं और बाकी सभी चीज़ों के लिए झूठ हैं, जैसे संख्याएं, बूलियन, ऑब्जेक्ट्स, भाव आदि।
function IsNullOrEmpty(value)
{
return (value == null || value === "");
}
function IsNullOrWhiteSpace(value)
{
return (value == null || !/\S/.test(value));
}
अधिक जटिल उदाहरण मौजूद हैं, लेकिन ये सरल हैं और लगातार परिणाम देते हैं। अपरिभाषित के लिए परीक्षण करने की आवश्यकता नहीं है, क्योंकि यह (मान == अशक्त) चेक में शामिल है। आप इन्हें स्ट्रिंग की तरह जोड़कर C # व्यवहार की नकल भी कर सकते हैं :
String.IsNullOrEmpty = function (value) { ... }
आप इसे स्ट्रिंग्स प्रोटोटाइप में नहीं डालना चाहते, क्योंकि अगर स्ट्रिंग-क्लास का उदाहरण शून्य है, तो यह त्रुटि करेगा:
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; } }]
];
कोई isEmpty()
विधि नहीं है, आपको टाइप और लंबाई की जांच करनी होगी:
if (typeof test === 'string' && test.length === 0){
...
जब या तो रनटाइम त्रुटियों से बचने के लिए टाइप चेक की आवश्यकता होती test
है ।undefined
null
व्हॉट्सएप के तारों को अनदेखा करना, आप इसका उपयोग अशक्त, खाली और अपरिभाषित की जांच करने के लिए कर सकते हैं:
var obj = {};
(!!obj.str) // Returns false
obj.str = "";
(!!obj.str) // Returns false
obj.str = null;
(!!obj.str) // Returns false
यह संक्षिप्त है और यह अपरिभाषित गुणों के लिए काम करता है, हालांकि यह सबसे पठनीय नहीं है।