كيفية استبدال جميع تكرارات السلسلة الفرعية في سلسلة JavaScript؟
مرحباً بالجميع! أنا مبتدئ في JavaScript وواجهت مشكلة: أحتاج إلى استبدال جميع تكرارات كلمة أو رمز معين في سلسلة نصية. جربت استخدام طريقة replace() لكنها تستبدل فقط أول تطابق.
إليك مثال على الكود الخاص بي:
```javascript
let text = "Я люблю JavaScript. JavaScript — это круто!";
let newText = text.replace("JavaScript", "Python");
console.log(newText); // يطبع: "Я люблю Python. JavaScript — это круто!"
```
كما ترى، تم استبدال الكلمة الأولى فقط "JavaScript" بينما بقيت الثانية. كيف يمكنني جعلها تستبدل جميع التكرارات؟ سمعت أنه يمكن استخدام التعبيرات المنتظمة (regular expressions)، لكني لا أفهمها جيداً بعد. هل هناك طريقة أبسط؟ أم يجب علي تعلم RegExp؟
سأكون ممتناً لشرح واضح مع أمثلة. شكراً!
<<>>
الحل: طريقة replace() مع تعبير منتظم والعلم g
أنت محق تماماً — الطريقة القياسية replace() بدون معاملات إضافية تستبدل فقط أول تطابق. لاستبدال جميع التكرارات، تحتاج إلى استخدام تعبير منتظم مع العلم g (global). إليك كيفية القيام بذلك:
let text = "Я люблю JavaScript. JavaScript — это круто!";
let newText = text.replace(/JavaScript/g, "Python");
console.log(newText); // يطبع: "Я люблю Python. Python — это круто!"
العلم g يخبر JavaScript بالبحث عن جميع التطابقات في السلسلة النصية، وليس فقط الأول. إذا كنت تريد استبدالاً غير حساس لحالة الأحرف، أضف العلم i (case-insensitive): /JavaScript/gi.