javascript - سكربت - شرح جافا سكريبت




كيف يمكنك التحقق من وجود سلسلة فارغة في JavaScript؟ (20)

لقد رأيت هذا thread ، لكن لم أجد مثالًا محددًا لجافا سكريبت. هل هناك سلسلة string.Empty متاح في جافا سكريبت ، أم أنها مجرد حالة بحث عن "" ؟


  1. تحقق من أن var a; يوجد
  2. تقليم false spaces في القيمة ، ثم اختبار emptiness

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

أستخدم مزيجًا ، أسرع عمليات التحقق هي الأولى.

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

أنا أستعمل :

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

أيضًا ، في حالة اعتبار سلسلة مملوءة بخطوط بيضاء "فارغة". يمكنك اختباره باستخدام هذا التعبير العادي:

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

إذا كنت بحاجة إلى التأكد من أن السلسلة ليست مجرد مجموعة من المساحات الفارغة (أفترض أن هذا هو التحقق من صحة النموذج) ، فيجب إجراء استبدال على المساحات.

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

إذا كنت تريد فقط التحقق مما إذا كانت هناك أي قيمة ، فيمكنك القيام بذلك

if (strValue) {
    //do something
}

إذا كنت بحاجة إلى التحقق تحديدًا من وجود سلسلة فارغة على قيمة فارغة ، أعتقد أن التحقق من "" هو أفضل رهان ، باستخدام عامل التشغيل === (بحيث تعرف أنه في الواقع سلسلة يتم مقارنتها مقابل ).

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

تجاهل سلاسل المسافات البيضاء ، يمكنك استخدام هذا للتحقق من فارغة ، فارغة وغير معرفة:

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

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

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

موجز ويعمل على خصائص غير محددة ، على الرغم من أنه ليس الأكثر قابلية للقراءة.


توفر مكتبة _.isEmpty() السفلية http://underscorejs.org/ _.isEmpty() مفيدة جدًا _.isEmpty() عن السلاسل الفارغة والكائنات الفارغة الأخرى.

المرجع: http://underscorejs.org/#isEmpty

isEmpty _.isEmpty(object)
إرجاع true إذا احتوى كائن لا يحصى على قيم (لا توجد خصائص خاصة به). بالنسبة للسلاسل والكائنات المشابهة للمصفوفة ، يتم فحص ما إذا كانت خاصية الطول هي 0.

_.isEmpty([1, 2, 3]);
=> خطأ

_.isEmpty({});
=> صحيح

دالات تسطير سفلي مفيدة جداً تتضمن:
http://underscorejs.org/#isNull _.isNull(object)
http://underscorejs.org/#isUndefined _.isUndefined(value)
http://underscorejs.org/#has _.has(object, key)


عادة ما أستخدم بعض الشيء مثل هذا ،

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

عادة ما أستخدم شيئًا مثل:

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

قمت ببعض الأبحاث عما يحدث إذا قمت بتمرير قيمة غير سلسلة وغير فارغة / فارغة إلى وظيفة الاختبار. كما يعلم الكثيرون ، (0 == "") صحيح في javascript ، ولكن بما أن 0 قيمة وليست فارغة أو خالية ، قد ترغب في اختبارها.

ترجع الدالتان التاليتان فقط للقيم غير المعروفة ، والقيمة الفارغة ، والفرز / whitespace ، والقيمة false لكل شيء آخر ، مثل الأرقام ، والعناصر المنطقية ، والكائنات ، والتعبيرات وما إلى ذلك.

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 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(!!str){
some code here;
}

أو استخدام نوع الصب:

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

كلاهما يقومان بنفس الوظيفة ، نوع يلقي المتغير إلى منطقي ، حيث str هو متغير.
إرجاع false for null,undefined,0,000,"",false .
يعود true للسلسلة "0" والمسافة البيضاء "".


لا تفترض أن المتغير الذي تقوم بفحصه هو سلسلة. لا تفترض أنه إذا كان هذا 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 === '')
  ...


لا توجد طريقة isEmpty() ، يجب عليك التحقق من النوع والطول:

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

يلزم التحقق من النوع لتجنب أخطاء وقت التشغيل عندما يكون test غير undefined أو null .


للتحقق مما إذا كانت سلسلة فارغة أم لا أو غير محددة يمكنني استخدامها:

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(val==="")...

للتحقق مما إذا كانت سلسلة فارغة أم مكافئ منطقي لعدم وجود قيمة (خالية ، غير معرفة ، 0 ، NaN ، false ، ...):

if(!val)...

محاولة:

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

وظيفة:

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

يمكنك استخدام lodash : _.isEmpty (القيمة).

وهو يغطي الكثير من الحالات مثل {} ، و '' ، و null ، وغير undefined .

ولكن دائمًا ما يتم إرجاع true لنوع Number أنواع البيانات الأولية _.isEmpty(10) سكريبت مثل _.isEmpty(10) أو _.isEmpty(Number.MAX_VALUE) كلاهما يرجع true .


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

هذه أيضًا طريقة عامة للتحقق مما إذا كان الحقل فارغًا.





is-empty