Strings in JavaScript
در این مقاله نوع داده رشته String به همراه Methods,Properties آن ها بررسی می کنیم. این که چگونه با رشته ها برخورد می کنیم و برای ویرایشات آن ها چه متد هایی در دسترس داریم.
String Object Wrapper
رشته تشکیل شده از تعدادی کاراکتر به صورت پشت سر هم که در بین دو “” , ” (double quotes or single quotes) قرار می گیرند. برای تعریف یک رشته به روش های زیر اقدام می کنیم:
var name = "David"; var subject = "Programming"; var obj = new String(“Tutorials Point”);
دقت داشته باشید اگر رشته ها را به صورت new String تعریف کرده باشید امکان مقایسه آن ها وجود ندارد(JavaScript objects cannot be compared.)
var a = 'hello' var b = new String('hello') var c = new String('hello') a == b //true a === b //false b == c //false b === c //false typeof a //"string" typeof b //"object" a instanceof String //false b instanceof String //true
روابط بالا در قالب Primitive Data Structure صدق می کند.
Escape sequences
به صورت کلی هر بار کاراکتر \ قبل از یک کاراکتر دیگر بیاید به آن Escape character می گوییم . برای استفاده کردن در داخل یک رشته از هر یک از کاراکتر های ” , ‘ , \ باید از یک \ در پشت آن استفاده کنید.
let stringOne = "hello \"abolfazl\"" //hello "abolfazl" let stringTow = "hello \'reza'\" // hello 'reza' let stringThree = "hello \\ again" //hello \ again
یک سری Escape character برای استفاده در رشته ها داریم که تعریف دیگری در رشته دارند :
\b , backspace
\n , new line
\v , vertical toolbar
break up a code line : برای این که یک رشته را به صورت چند خطی تعریف کنیم (break up a code line) می توانیم از روش زیر استفاده کنیم :
let stringOne = "hello dear \ how are you \ what do you do \ are you feeling good"; //output : hello dear how are you what do you do are you feeling good
assign tow string : برای اتصال دو رشته از کاراکتر + استفاده می کنیم.
let stringOne = "hello " let stringTow = "abolfazl" console.log(stringOne + "dear " + stringTow)
String Operators
به صورت کلی عملگر های رشته ها اتصال آن (concatenate) و مقدار دهی است . پس دو عملگر + , = و ترکیب این دو += می تواند این مقدار را بروزرسانی کند.
Operator | Description |
+ | اتصال دو رشته به هم یا concatenate
let text1 = "Good "; let text2 = "Morning"; let text3 = text1 + text2; // "Good Morning |
+= | ترکیب دو عملگر اتصال و مقداردهی (concatenate , assignment)
let text1 = "Good "; let text2 = "Morning"; text1 += text2; // text1 = text1 + text2 //text1 = "Good Morning" |
Grave Accent Character
اگر قرار است یک یا چند متغیر را در یک رشته قرار بدهید می توانید از این کاراکتر “ و syntax زیر استفاده کنید.
var famil = 'alavi' var displayName = `${name} ${famil}` displayName //"ali alavi"
همچنین می توانید داخل این ${}
از statement های مجاز مثل عملیات های ریاضی استفاده کنید.
var a = `sum of 2,5 ${2+5}` //"sum of 2,5 7"
همچنین می توان برای تعریف یک رشته بزرگ نیز این این کاراکتر استفاده کرد.
var bio = ` hello guys , my name is Abolfazl Sabagh and i'm 28 i'm a software engineer and working in server side programming `
String Methods
Method | Description |
concat | اتصال دو یا چند رشته به هم
let text1 = "sea"; let text2 = "food"; let result = text1.concat(text2); //seafood |
includes
startsWith endsWith |
این یک عبارت را در یک رشته بزرگ جستجو می کند و خروجی Boolean برمی گرداند.
let text = "Hello world, welcome to the universe."; let result = text.includes("world"); //true startsWith : برای این که یک رشته با یک رشته خاص شروع شده باشد. function checkSSL(url){ return url.startsWith('https') } let homeUrl = 'https://gnutec.net' console.log(checkSSL(homeUrl)) endsWith : برای این که چک کنیم یک رشته با یک رشته خاص پایان یافته باشد: function trailingslashit(url){ return (url.endsWith('/'))? url : `${url}/` } let homeUrl = "https://gnutec.net" console.log(trailingslashit(homeUrl)) |
indexOf
search |
در این توابع یک عبارت در یک رشته جستجو می گردد و در نهایت موقعیت (position) آن عبارت در این رشته مشخص می گردد.
let text = "Hello world, welcome to the universe."; let result = text.indexOf("welcome"); //13 let text = "Mr. Blue has a blue house" let position = text.search("Blue"); //4 |
match | در این متد یک عبارت را در یک رشته جستجو می کنیم و نهایتا رشته یافت شده را بر می گردانیم . درصورت خطا false برمی گردد.
let text = "The rain in SPAIN stays mainly in the plain"; let result = text.match("ain"); //ain در مثال زیر یک عبارت منظم ساده بدون flag را جستجو می کنیم : let text = "The rain in SPAIN stays mainly in the plain"; text.match(/ain/); //ain در مثال زیر تمامی عبارات یافت شده در کل خط را به صورت یک ارایه برمی گرداند. در این مثال دو flag برای تمام عبارات یافت شده در رشته (g) و عدم حساسیت به حروف (i) let text = "The rain in SPAIN stays mainly in the plain"; let result = text.match(/ain/gi); //["ain","AIN","ain","ain"] خروجی این تابع یک آرایه از موارد match شده با رشته است. نکته مهم این است که عبارت منظم نیاز است که میان // قرار بگیرد. اگر یک رشته را تبدیل به یک عبارت منظم کنیم می توانیم از کلاس RegExp استفاده کنیم. let str = "^\/posts\/(\\d+)$" let reg = new RegExp(str) #/^\/posts\/(\d+)$/ |
repeat
padStart padEnd |
این متد یک عبارت را به تعداد ورودی خود تکرار می کند.
let text = "Hello world!"; let result = text.repeat(2); //Hello world!Hello world! اگر بخواهید یک رشته را به تعداد خاص تکرار و به ابتدای یک رشته دیگر بچسبانید. پارامتر اول تعداد تکرار و پارامتر دوم رشته مورد نظر برای تکرار اگر بخواهید یک رشته را به تعداد خاص تکرار و به انتهای یک رشته دیگر بچسبانید.پارامتر ها دقیقا مثل padEnd است. |
replace
replaceAll |
این متد یک رشته یا یک عبارت منظم را در یک رشته دیگر جایگزین می کند.
let text = "Visit Microsoft!"; let result = text.replace("Microsoft", "W3Schools"); //ٰVisit W3Schools می توان برای این رشته یک عبارت منظم نیز جستجو کرد let text = "Mr Blue has a blue house and a blue car"; let result = text.replace(/blue/g, "red"); //Mr Blue has a red house and a red car دقت داشته باشید در مثال بالا چون از flag برابر i استفاده نکرده ایم عبارت Blue جایگزین نشده است. resplaceAll دقیقا همین replace است با این تفاوت که در کل رشته این جایگزینی را انجام می دهد. پارامتر ها دقیقا مطابق با replace است. |
split | در این متد حکم explode در پی اچ پی دارد . به این ترتیب یک رشته را با جدا کننده به صورت یک آرایه در می آورد.
let text = "How are you doing today?"; const myArray = text.split(" "); //["How", "are", "you", "doing", "today?"] |
slice
substr substring |
این دسته متد ها برای جدا کردن قسمتی از یک رشته است که نحوه موقعیت گیری در آن ها متفاوت است . در slice = substring و substr یک الگوریتم خاص خود را دارد.
let text = "Hello world!"; let result = text.slice(1,4); //ell //----------------------------------- let text = "Hello world!"; let result = text.substr(1,4); //ello //----------------------------------- let text = "Hello world!"; let result = text.substring(1,4); //ell |
toUpperCase | رشته مورد نظر را به صورت حروف بزرگ در می آورد |
toLowerCase | رشته مورد نظر را به صورت حروف کوچک تبدیل می کند |
trim
trimStart trimEnd |
فضای خالی را از چپ و راست رشته پاک می کند.
let text = " Hello World! "; let result = text.trim(); //Hello World! trimStart , trimEnd معادل همان trim از سمت راست و چپ است که در زبان php به آن rtrim,ltrim می گوییم. |
در مثال زیر ما یک شماره کارت را تنها ۴ رقم آخر را نمایش می دهیم:
let cardNumber = '5023491277249123' let cardNumberEnd = cardNumber.slice(-4) let secretCardNumber = cardNumberEnd.padStart(cardNumber.length - 4 , '*') console.log(secretCardNumber)
در مثالی دیگر همین الگوریتم را روی شماره کارت اما این بار ۴ رقم ابتدایی را نمایش می دهیم
let cardNumber = '5023491277249123' let cardNumberEnd = cardNumber.slice(0,4) let secretCardNumber = cardNumberEnd.padEnd(cardNumber.length - 4 , '*') console.log(secretCardNumber)
String Properties
Property | Description |
prototype | از این ویژگی برای افزودن ویژگی و متد های جدید استفاده می کنیم . در بخش اول ساختمان داده های جاوااسکریپت توضیحات داده شده است. |
length | اندازه این رشته را برمی گرداند.
let text = "Hello World!"; let length = text.length; //12 |
دیدگاهتان را بنویسید