String در جاوا اسکریپت

در جاوا اسکریپت، دادههای متنی بهصورت رشتهای ذخیره میشوند. هیچ نوع جداگانهای برای یک کاراکتر وجود ندارد. فرمت داخلی رشتهها همیشه UTF-16 است، به رمزگذاری صفحه وابسته نیست. در این پست آموزشی از مکتب خونه، با نوع اولیه String در جاوا اسکریپت و نحوه استفاده از آن برای تعریف رشتهها آشنا خواهید شد.
مقدمهای بر String در جاوا اسکریپت
String در جاوا اسکریپت مقادیر اولیه هستند. همچنین رشتهها تغییرناپذیر هستند. به این معنی که اگر یکرشته را تغییر دهید، همیشه یکرشته باقی خواهد ماند و ریشه و نوع آن یعنی رشته اصلی تغییر نمیکند.
برای ایجاد رشتههای تحتاللفظی، از گیومههای تکی (‘) یا دو گیومه (“) مانند این استفاده میکنید:
let str = 'Hi';
let greeting = "Hello";
استاندارد ES6 الفبای الگو را معرفی کرد که به شما امکان میدهد کاراکترهای بک تیکرشته (`) را تعریف کنید:
حروف الفبای الگو به شما این امکان را میدهد که از نقلقولهای تکی و مضاعف در داخل یکرشته بدون نیاز گریختن از آنها استفاده کنید. مثلاً:
let mesage = `"I'm good". She said";
همچنین، میتوانید متغیرها و عبارات را در قالب واقعی خودشان نیز قرار دهید. جاوا اسکریپت متغیرها را با مقدار آنها در رشته جایگزین میکند. این کار درونیابی رشتهای نامیده میشود. مثلاً
let name = 'ALI';
let message = `Hi, I'm ${name}.`;
console.log(message);
در این مثال، جاوا اسکریپت متغیر نام را با مقدار آن در قالب literal جایگزین میکند.
اختصاص رشته به متغیر
مقدار رشته را میتوان با استفاده از عملگر برابر با (=) به یک متغیر اختصاص داد.
var str1 = "Hello World";
var str2 = 'Hello World';
یکرشته همچنین میتواند مانند آرایه کاراکتری مبتنی بر اندیس صفر رفتار کند.
var str = 'makhtabkhooneh';
str[0] // m
str[1] // a
str[2] // k
str[3] // h
str[4] // t
str[5] // a
str[6] // k
str[7] // h
str[8] // o
str[9] // o
str[10] // n
str[11] // e
str[12] // h
str.length // 13
رهایی از کاراکترهای خاص در جاوا اسکریپت
برای رهایی از کاراکترهای خاص در یک String در جاوا اسکریپت، از کاراکتر بک اسلش \ استفاده میکنیم. مثلاً:
- Windows line break: ‘\r\n’
- Unix line break: ‘\n’
- Tab: ‘\t’
- Backslash ‘\’
مثال زیر از کاراکتر بک اسلش برای رهایی از کاراکتر نقلقول واحد در یکرشته استفاده میکند:
به دست آوردن طول String در جاوا اسکریپت
ویژگی length طول یکرشته را برمیگرداند. به مثال زیر توجه کنید.
let str = "makhtabkhooneh!";
console.log(str.length); // 15
توجه داشته باشید که جاوا اسکریپت دارای نوع String (با حرف S با حروف بزرگ) است که نوع بستهبندی اولیه از نوع رشته اولیه است. بنابراین، شما میتوانید به تمام ویژگیها و متدهای نوع String از یکرشته اولیه دسترسی داشته باشید.
دسترسی به کاراکترها در جاوا اسکریپت
برای دسترسی به کاراکترهای یک String در جاوا اسکریپت، از نماد آرایه مانند [] با اندیس مبتنی بر صفر استفاده میکنید. مثال زیر اولین کاراکتر یکرشته با اندیس صفر را برمیگرداند:
let str = "Hello";
console.log(str[0]); // "H"
برای دسترسی به آخرین کاراکتر رشته، از مقدار اندیس -1 استفاده میکنیم:
let str = "Hello";
console.log(str[str.length -1]); // "o"
الحاق رشتهها از طریق عملگر +
برای به هم پیوستن دو یا چند String در جاوا اسکریپت ، از عملگر + استفاده میکنیم:
let name = 'ALI';
let str = 'Hello ' + name;
console.log(str); // "Hello ALI
"
اگر میخواهید یکرشته را تکه تکه جمع کنید، میتوانید از عملگر += استفاده کنید:
let className = 'btn';
className += ' btn-primary'
className += ' none';
console.log(className);
تبدیل مقادیر به رشته
برای تبدیل یک مقدار غیر رشتهای به String در جاوا اسکریپت، از یکی از موارد زیر استفاده میکنیم:
String(n);
” + n
n.toString()
توجه داشته باشید که متد toString() برای undefined و null کار نمیکند. هنگامیکه یکرشته را به یک بولی تبدیل میکنیم، نمیتوانیم آن را دوباره تبدیل کنید. مثلاً:
let status = false;
let str = status.toString(); // "false"
let back = Boolean(str); // true
در این مثال:
- ابتدا متغیر status را اعلام کرده و با مقدار false مقداردهی اولیه کنید.
- دوم، متغیر status را با استفاده از متد toString() به رشته تبدیل کنید.
- سوم، با استفاده از تابع Boolean() رشته را به یک مقدار بولی برگردانید. تابع Boolean() رشته “false” را به یک مقدار بولی تبدیل میکند. نتیجه درست است زیرا “false” یکرشته غیر خالی است.
توجه داشته باشید که تنها رشتهای که برای Boolean()، false را برمیگرداند، رشته خالی (‘ ‘) است.
مقایسه String در جاوا اسکریپت
برای مقایسه دو رشته، از عملگرهای مقایسه مانند >، >=، <، <= و == استفاده میکنیم.
عملگرهای مقایسه رشتهها را بر اساس مقادیر عددی کاراکترها مقایسه میکنند.و ممکن است ترتیب رشتهای را که با آنچه در دیکشنریها استفاده میشود متفاوت باشد، برگرداند. مثلاً:
اگرچه:
قرار دادن نقلقولها در داخل رشته در جاوا اسکریپت
از علامتهای نقلقول در داخل مقدار رشته میتوانیم استفاده کنیم که با علامتهای نقلقول اطراف مقدار رشته مطابقت نداشته باشد. بهعنوانمثال، اگر تمام رشته با علامتهای نقلقول دوتایی محصورشده باشد، از علامت نقلقول استفاده کنید و برعکس.
var str1 = "This is 'simple' string";
var str2 = 'This is "simple" string';
اگر میخواهید همان نقلقولها را در یک مقدار رشته مانند نقلقولهای اطراف قرار دهید، قبل از علامت نقلقول در داخل مقدار رشته، از بک اسلش (\) استفاده کنید.
var str1 = "This is \"simple\" string";
var str2 = 'This is \'simple\' string';
شیء رشته
در بالا، یکرشته literal را به یک متغیر اختصاص دادیم. جاوا اسکریپت به شما این امکان را میدهد که مطابق شکل زیر با استفاده از کلمه کلیدی جدید یک شیء String ایجاد کنید.
var str1 = new String(); str1 = 'Hello World'; // or var str2 = new String('Hello World');
در مثال بالا، جاوا اسکریپت شیء String را بهجای نوع رشته ابتدایی برمیگرداند. توصیه میشود بهجای شیء String از رشته اولیه استفاده کنید.:
نکته:
هنگام کار با شیء String مراقب باشید زیرا مقایسه اشیاء رشته با استفاده از عملگر ==، اشیاء String را مقایسه میکند نه مقادیر. مثال زیر را در نظر بگیرید.
var str1 = new String('Hello World');
var str2 = new String('Hello World');
var str3 = 'Hello World';
var str4 = str1;
str1 == str2; // false - str1 و str2 دو شی متفاوت هستند
str1 == str3; // true
str1 === str4; // true
typeof(str1); // object
typeof(str3); //string
متدهای String در جاوا اسکریپت
در این بخش به معرفی انواع متدهای String در جاوا اسکریپت خواهیم پرداخت و وظیفه هرکدام را بیان خواهیم کرد.
charAt(position)
کاراکتر را در موقعیت مشخصشده (در شماره) برمیگرداند.
charCodeAt(position)
عددی را برمیگرداند که مقدار یونیکد کاراکتر را در موقعیت دادهشده (در شماره) نشان میدهد.
concat([string,,])
مقادیر تحتاللفظی رشته مشخصشده را برمیگرداند (رشتههای متعددی را که با کاما از هم جدا شدهاند) و یکرشته جدید برمیگرداند.
indexOf(SearchString, Position)
اندیس اولین وقوع رشته مشخصشده را با شروع از اندیس عدد مشخصشده برمیگرداند. اگر پیدا نشد -1 را برمیگرداند.
lastIndexOf(SearchString, Position)
آخرین اندیس وقوع SearchString مشخصشده را از موقعیت مشخصشده شروع میکند. اگر پیدا نشد -1 را برمیگرداند.
localeCompare(string,position)
دو رشته را در محلی فعلی مقایسه میکند.
match(RegExp)
با استفاده از عبارت منظم مشخصشده، یکرشته را برای یک مطابقت جستجو کنید. یک آرایه منطبق را برمیگرداند.
replace(searchValue, replaceValue)
مقدار رشته مشخصشده را جستجو کنید و با رشته مقدار جایگزینی مشخصشده جایگزین کنید و رشته جدید را برگردانید. عبارت منظم همچنین میتواند بهعنوان SearchValue استفاده شود.
search(RegExp)
بر اساس عبارت منظم مشخصشده، جستجو را در میان رشتهها انجام میدهد.
slice(startNumber, endNumber)
بخشی از یکرشته را بر اساس شاخص شروع و پایان مشخصشده استخراج میکند و یکرشته جدید را برمیگرداند.
split(separatorString, limitNumber)
یکرشته را با جدا کردن رشته به زیررشتهها بر اساس جداکننده مشخصشده به آرایهای از رشتهها تقسیم میکند. از عبارت منظم نیز میتوان بهعنوان جداکننده استفاده کرد.
substr(start, length)
کاراکترهای یکرشته را از موقعیت شروع مشخصشده از طریق تعداد مشخصشده کاراکتر (طول) برمیگرداند.
substring(start, end)
کاراکترهای یکرشته را بین اندیس شروع و پایان برمیگرداند.
toLocaleLowerCase()
یکرشته را با توجه به محلی فعلی به حروف کوچک تبدیل میکند.
toLocaleUpperCase()
یکرشته را با توجه به محلی فعلی به حروف بزرگ تبدیل میکند.
toLowerCase()
مقدار رشته کوچک را برمیگرداند.
toString()
مقدار شیء String را برمیگرداند.
toUpperCase()
مقدار رشته بزرگ را برمیگرداند.
valueOf()
مقدار اولیه شیء رشته مشخصشده را برمیگرداند.
خلاصه
در این پست آموزشی ما با String در جاوا اسکریپت و نحوه استفاده از آن و کاربرد آن در زبان برنامهنویسی جاوا اسکریپت آشنا شدیم. بهصورت کلی میتوان گفت که:
- رشتههای جاوا اسکریپت مقادیر اولیه و غیرقابل تغییر هستند.
- رشتههای تحتاللفظی با گیومههای تکی (‘)، گیومههای دوتایی (“) یا بکتیک ها (‘) مشخص میشوند.
- ویژگی length طول رشته را برمیگرداند.
- برای مقایسه رشتهها از عملگرهای مقایسه `>, >=, <, <=, == استفاده میکنیم.