سؤال

هذا السؤال لديه بالفعل إجابة هنا:

ما هو تطبيق JavaScript النظيف والفعال لإزالة المسافات البادئة والزائدة من السلسلة؟

على سبيل المثال:

" dog"

"dog "

" dog "

" dog "

يتحول كل شيء إلى

"dog"

هل كانت مفيدة؟

المحلول

استخدم هذا:

if(typeof(String.prototype.trim) === "undefined")
{
    String.prototype.trim = function() 
    {
        return String(this).replace(/^\s+|\s+$/g, '');
    };
}

ستكون وظيفة القطع متاحة الآن كوظيفة من الدرجة الأولى على سلاسلك.على سبيل المثال:

" dog".trim() === "dog" //true

يحرر:أخذ اقتراح JP لدمج أنماط التعبير العادي في نمط واحد.تمت إضافة المُعدِّل العام أيضًا وفقًا لاقتراح كريستوف.

أخذ فكرة ماثيو كروملي حول استنشاق وظيفة القطع قبل إعادة إنشائها.يتم ذلك في حالة أن إصدار JavaScript المستخدم على العميل أحدث وبالتالي لديه وظيفة القطع الأصلية الخاصة به.

نصائح أخرى

بالنسبة لمستخدمي jquery، ماذا عن $.trim(s)

لقد لاحظ جامبو هذا بالفعل في تعليق، ولكن هذا يستحق التكرار كإجابة:ال trim() تمت إضافة الطريقة في JavaScript 1.8.1 وهي مدعومة من قبل جميع المتصفحات الحديثة (Firefox 3.5+، IE 9، Chrome 10، Safari 5.x)، على الرغم من أن IE 8 والإصدارات الأقدم لا تدعمها.الاستخدام بسيط:

 "  foo\n\t  ".trim() => "foo"

أنظر أيضا:

ها هي الوظيفة التي أستخدمها.

function trim(s){ 
  return ( s || '' ).replace( /^\s+|\s+$/g, '' ); 
}

حشوة أفضل من MDN الذي يدعم إزالة بوم و نبسب:

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}

ضع في اعتبارك أن تعديل النماذج الأولية المضمنة يأتي مع نجاح كبير في الأداء (نظرًا لتوقف محرك JS عن عدد من تحسينات وقت التشغيل)، وفي مواقف الأداء الحرجة قد تحتاج إلى التفكير في البديل المتمثل في تحديد myTrimFunction(string) بدلاً من.ومع ذلك، إذا كنت تستهدف بيئة أقدم بدون لغة أصلية .trim() الدعم، فمن المحتمل أن يكون لديك مشكلات أداء أكثر أهمية للتعامل معها.

ستيفن ليفيثان كتب ذات مرة عن كيفية تنفيذ أ تقليم جافا سكريبت بشكل أسرع.إنه بالتأكيد يستحق المشاهدة.

إذا كنت تستخدم jQuery بالفعل، فقد ترغب في إلقاء نظرة عليه jQuery.trim() والذي تم توفيره بالفعل مع jQuery.

إذا كنت، بدلاً من كتابة تعليمات برمجية جديدة لقص سلسلة ما، تنظر إلى التعليمات البرمجية الموجودة التي تستدعي "strip()" وتتساءل عن سبب عدم عملها، فقد ترغب في التحقق مما إذا كانت تحاول تضمين شيء مثل إطار عمل Protypejs ، والتأكد من تحميله بالفعل.
يضيف هذا الإطار وظيفة شريطية إلى جميع كائنات السلسلة، ولكن على سبيل المثال.لقد قمت بترقيته ولا تزال صفحات الويب الخاصة بك تشير إلى ملف .js القديم، ولن يعمل بالطبع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top