درس 23 از 24

جایگزینی بخشی از رشته در جاوااسکریپت با replace() | مثال و نکات مهم

بخش: کار با رشته در جاوااسکریپت

در جاوااسکریپت، موقعیت‌های زیادی وجود دارد که ممکن است لازم باشد بخشی از یک رشته را با رشته‌ای دیگر جایگزین کنید.

برای مثال، ممکن است بخواهید اطلاعات کاربر را در یک URL به‌روزرسانی کنید، قالب تاریخ‌ها را تغییر دهید، یا خطاهای موجود در محتوای تولیدشده توسط کاربر را اصلاح کنید.

متد replace() در جاوااسکریپت به شما اجازه می‌دهد یک مقدار مشخص (مثل یک کلمه یا کاراکتر) را در یک رشته پیدا کنید و آن را با مقدار دیگری جایگزین کنید. این متد یک رشته‌ی جدید با مقدار جایگزین‌شده برمی‌گرداند و رشته‌ی اصلی را بدون تغییر باقی می‌گذارد، چون رشته‌ها در جاوااسکریپت تغییرناپذیر هستند.

سینتکس پایه به این شکل است:

string.replace(searchValue, newValue);

searchValue مقداری است که می‌خواهید در رشته به‌دنبالش بگردید. این مقدار می‌تواند یک رشته یا یک عبارت باقاعده (regular expression / regex) باشد که الگوهایی در متن را توصیف می‌کند. این ویژگی به شما امکان می‌دهد رشته‌ها را به‌شکلی منعطف و قدرتمند جستجو و دستکاری کنید. در درس‌های بعدی بیشتر درباره‌ی regular expressionها یاد خواهید گرفت.

newValue مقداری است که جای searchValue قرار می‌گیرد. یک مثال ساده:

let text = "I love JavaScript!";
console.log(text); // "I love JavaScript!"
let newText = text.replace("JavaScript", "coding");
console.log(newText);  // "I love coding!"
"I love JavaScript!"
"I love coding!"

در این مثال، کلمه‌ی JavaScript در رشته پیدا می‌شود و با coding جایگزین می‌شود.

متد replace() به بزرگی و کوچکی حروف حساس است، یعنی فقط تطابق‌های دقیق با searchValue را پیدا می‌کند. برای مثال:

let sentence = "I enjoy working with JavaScript.";
console.log(sentence);  // "I enjoy working with JavaScript."
let updatedSentence = sentence.replace("javascript", "coding");
console.log(updatedSentence);  // "I enjoy working with JavaScript."
"I enjoy working with JavaScript."
"I enjoy working with JavaScript."

در اینجا، چون javascript (با j کوچک) با JavaScript (با J بزرگ) مطابقت ندارد، جایگزینی انجام نمی‌شود.

به‌صورت پیش‌فرض، متد replace() فقط اولین رخداد searchValue را جایگزین می‌کند. اگر آن مقدار چند بار در رشته ظاهر شده باشد، فقط اولین مورد جایگزین می‌شود:

let phrase = "Hello, world! Welcome to the world of coding.";
console.log(phrase);  // "Hello, world! Welcome to the world of coding."
let updatedPhrase = phrase.replace("world", "universe");
console.log(updatedPhrase);  // "Hello, universe! Welcome to the world of coding."
"Hello, world! Welcome to the world of coding."
"Hello, universe! Welcome to the world of coding."

توجه کنید که فقط اولین رخداد world با universe جایگزین شده است.

متد replace() در جاوااسکریپت ابزاری قدرتمند و انعطاف‌پذیر برای کار با رشته‌هاست.

این متد به شما اجازه می‌دهد بخش‌های مشخصی از یک رشته را جایگزین کنید؛ چه با کاراکترهای تکی سر و کار داشته باشید، چه با کلمات، یا حتی الگوهای پیچیده‌تر با استفاده از regular expressionها.

با اینکه این متد برای جایگزینی‌های مستقیم بسیار مناسب است، اما درک حساس بودن آن به حروف کوچک و بزرگ و رفتار پیش‌فرضش (مثل جایگزین کردن فقط اولین رخداد) به شما کمک می‌کند از آن مؤثرتر استفاده کنید.


سوالات

رفتار پیش‌فرض متد replace() در جاوااسکریپت چیست؟

  • همه‌ی رخدادهای مقدار جستجو را جایگزین می‌کند.
  • فقط اولین رخداد مقدار جستجو را جایگزین می‌کند.
  • اگر مقدار جستجو پیدا نشود، هیچ کاری نمی‌کند.
  • یک در میان رخدادهای مقدار جستجو را جایگزین می‌کند.

خروجی کد زیر چه خواهد بود؟

let phrase = "freeCodeCamp is awesome!";
let updatedPhrase = phrase.replace("freecodecamp", "fCC");

console.log(updatedPhrase);
  • "fcc is awesome!"
  • "fCC is awesome!"
  • "freeCodeCamp is awesome!"
  • undefined

خروجی کد زیر چه خواهد بود؟

let phrase = "Good morning, morning people!";
let updatedPhrase = phrase.replace("morning", "evening");

console.log(updatedPhrase);
  • "Good morning, evening people!"
  • "Good evening, morning people!"
  • "Good evening, evening people!"
  • "Good morning, morning people!"