هنگام کار کردن با رشتهها در جاوااسکریپت، گاهی لازم است کاراکترهای خاصی را داخل رشته قرار دهید که در حالت عادی ممکن است موتور جاوااسکریپت آنها را اشتباه تفسیر کند.
دو کار رایج در این زمینه شامل ایجاد خط جدید (newline) داخل رشته و escape کردن برخی کاراکترها (مثل کوتیشنها/نقلقولها) است تا مطمئن شوید درست نمایش داده میشوند.
در بسیاری از زبانهای برنامهنویسی، از جمله جاوااسکریپت، میتوانید با استفاده از یک کاراکتر ویژه به نام escape sequence (دنبالهٔ گریز) داخل یک رشته خط جدید ایجاد کنید. رایجترین escape sequence برای خط جدید \n است.
برای مثال، اگر بخواهید یک رشته را به چند خط بشکنید، باید هر جایی که میخواهید خط جدید شروع شود از \n استفاده کنید:
let poem = "Roses are red,\nViolets are blue,\nJavaScript is fun,\nAnd so are you.";
console.log(poem);
"Roses are red,
Violets are blue,
JavaScript is fun,
And so are you
escape sequenceِ \n به جاوااسکریپت میگوید در همان نقطه یک line break (شکست خط) درج کند، و نتیجه این میشود که رشته در خروجی در چند خط نمایش داده شود.
مفهوم مهم دیگری که هنگام کار با رشتهها وجود دارد، escape کردن کاراکترها است. گاهی لازم است کاراکترهایی را داخل رشته قرار دهید که جاوااسکریپت معمولاً از آنها برای کار دیگری استفاده میکند؛ مثل کوتیشنها.
اگر بدون escape کردن، از کوتیشنها داخل یک رشته استفاده کنید، ممکن است خطا ایجاد شود، چون جاوااسکریپت فکر میکند شما میخواهید رشته را تمام کنید.
برای مثال، این کد باعث خطا میشود:
let statement = "She said, "Hello!"";
جاوااسکریپت گیج میشود چون فکر میکند رشته بعد از کلمهی "said," تمام شده است؛ در حالی که شما میخواهید کوتیشنهای دور "Hello!" جزئی از رشته باشند.
برای حل این مشکل، میتوانید کوتیشنهای داخلی را escape کنید؛ یعنی قبل از آنها یک بکاسلش (\) بگذارید:
let statement = "She said, \"Hello!\"";
console.log(statement); // She said, "Hello!"
"She said, "Hello!""
بکاسلش به جاوااسکریپت میگوید کوتیشنها را بهعنوان کاراکترهای واقعی/لفظی (literal characters) در نظر بگیرد تا در خروجی درست نمایش داده شوند.
همچنین میتوانید سایر کاراکترهای خاص را هم escape کنید؛ مثل خودِ بکاسلش (\\) یا تککوتیشنها داخل رشتهای که با تککوتیشن نوشته شده است
\'
این هم یک مثال دیگر با تککوتیشن:
let quote = 'It\'s a beautiful day!';
console.log(quote); // It's a beautiful day!
"It's a beautiful day!"
با escape کردن تککوتیشن با
\'
جاوااسکریپت متوجه میشود که باید آن را به عنوان بخشی از رشته قرار دهد، نه اینکه رشته را زودتر تمام کند.
Escape کردن و ایجاد خط جدید برای زمانی ضروری هستند که دارید خروجی را قالببندی میکنید یا با کاراکترهای خاص در رشتهها سروکار دارید. این تکنیکها کمک میکنند از خطا جلوگیری کنید و مطمئن شوید متن شما دقیقاً همانطور که میخواهید نمایش داده میشود.
سوالات
کدامیک از escape sequenceهای زیر را برای ایجاد یک خط جدید در رشته استفاده میکنید؟
\\\t\n\"
چرا لازم است بعضی کاراکترها را داخل یک رشته escape کنیم؟
- برای انجام عملیات ریاضی روی رشته
- برای جلوگیری از خطاهای سینتکسی و اینکه مطمئن شویم کاراکترهای خاص داخل رشته قرار میگیرند
- برای ترکیب دو رشته متفاوت در یک رشته
- برای تبدیل رشته به حروف بزرگ
چطور تککوتیشنها را بهدرستی داخل رشتهای قرار میدهید که خودش با تککوتیشن احاطه شده است؟
- استفاده از تککوتیشن داخل دابلکوتیشن
- استفاده از کاراکتر
\قبل از کوتیشنهایی که میخواهید وارد کنید - استفاده از
\nبرای شکستن رشته - جاوااسکریپت اجازه نمیدهد کوتیشن داخل کوتیشن دیگر قرار بگیرد
