[Javascript] لماذا تستبدل جافا سكريبت المثيل الأول فقط عند استخدام الاستبدال؟


Answers

على عكس مكتبة فئة C # /. NET (ومعظم اللغات المعقولة الأخرى) ، عندما تمر String في كوسيطة سلسلة إلى المطابقة إلى الأسلوب string.replace ، فإنه لا يتم استبدال سلسلة. يقوم بتحويل السلسلة إلى RegExp ويقوم باستبدال regex. كما يوضح Gumbo ، يتطلب استبدال regex علامة g global ، والتي لا يتم تشغيلها بشكل افتراضي ، لاستبدال كل المباريات دفعة واحدة.

إذا كنت تريد استبدالًا حقيقيًا استنادًا إلى سلسلة - على سبيل المثال ، لأن سلسلة المطابقة ديناميكية وقد تحتوي على أحرف لها معنى خاص في regexen - فإن لغة جافا سكريبت لذلك هي:

var id= 'c_'+date.split('/').join('');
Question

لدي هذا

 var date = $('#Date').val();

هذا الحصول على القيمة في مربع النص ما سيبدو مثل هذا

2009/12/31

الآن أفعل هذا على ذلك

var id = 'c_' + date.replace("/", '');

والنتيجة هي

c_1231 / 2009

يفتقد الأخير '/' أنا لا أفهم لماذا رغم ذلك.