تعداد بازدید: 372

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

مطالب مشابه

Obeject Data Structure in JavaScript

هر زبان برنامه نویسی از دو ساختار اصلی تشکیل شده است . بخش اول (Data Structure) ساختمان های داده آن و بخش دوم لیست...

Window Object Methods

در محیط اجرای مرورگر یک سری متد های پیش فرض برای یک سری عملیات های عمومی تر از متدهای ساختمان داده های موجود primitive...

webpack javascript module bundler

Webpack Module Bundler Part 3

Loader ها در وب پک برای توسعه عملیات بیلد برای پشتیبانی از انواع Assets می باشد . Loader ها هم دقیقا مثل پلاگین ها یک...

Ecma Script 6 یا جاوا اسکریپت ۶

نسخه ای زبان جاوا اسکریپت که از استاندارد های بین المللی ecma استفاده می کند را ecma script می نامیم. نمی توان ecma...

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای Strings in JavaScript

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *