متدهای نوع داده متنی یا رشته‌ای در جاوااسکریپت

از ویکی کد
پرش به ناوبری پرش به جستجو
دورهٔ آموزشی جاوااسکریپت
Javascript.jpg
جاوااسکریپت
موارد آموزشی
۱آموزش جاوااسکریپت
۲مقدمه‌ای بر جاوااسکریپت
۳قوانین و اصول اولیه زبان جاوااسکریپت
۴خروجی جاوااسکریپت
۵عبارت‌ها در جاوااسکریپت
۶شیوهٔ نوشتن دستورات در جاوااسکریپت
۷نظرات یا کامنت‌ها (Comments) در جاوااسکریپت
۸متغیرها در جاوااسکریپت
۹عملگرهای جاوااسکریپت
۱۰عملگرهای ریاضی در جاوااسکریپت
۱۱عملگرهای مقداردهی در جاوااسکریپت
۱۲انواع داده‌ها در جاوااسکریپت
۱۳توابع در جاوااسکریپت
۱۴اشیاء (object) در جاوااسکریپت
۱۵رویدادها در جاوااسکریپت
۱۶رشته‌های متنی (string) در جاوااسکریپت
۱۷متدهای نوع داده متنی یا رشته‌ای در جاوااسکریپت
۱۸اعداد در جاوااسکریپت
۱۹متدهای داده‌های عددی در جاوااسکریپت
۲۰آرایه‌ها در جاوااسکریپت
۲۱متدهای آرایه در جاوااسکریپت
۲۲مرتب‌سازی آرایه‌ها در جاوااسکریپت
۲۳متدهای پیمایش آرایه در جاوااسکریپت
۲۴اشیاء تاریخ و زمان در جاوااسکریپت
۲۵فرمت‌های تاریخ و زمان در جاوااسکریپت
۲۶متدهای دریافت تاریخ و زمان در جاوااسکریپت
۲۷متدهای تنظیم زمان و تاریخ در جاوااسکریپت
۲۸شی ریاضی (Math) در جاوااسکریپت
۲۹ایجاد عدد تصادفی در جاوااسکریپت
۳۰مقادیر بولین (Booleans) در جاوااسکریپت
۳۱عملگرهای منطقی و مقایسه‌ای در جاوااسکریپت
۳۲ساختار if else و else if در جاوااسکریپت
۳۳تکه کد Switch در جاوا اسکریپت
۳۴حلقه For در جاوااسکریپت
۳۵حلقه While در جاوااسکریپت
۳۶کلمات کلیدی Break و Continue در جاوااسکریپت
۳۷تبدیل نوع داده‌ها در جاوااسکریپت
۳۸عملیات‌های بیتی در جاوااسکریپت
۳۹عبارات با قاعده در جاوااسکریپت
۴۰خطاها در جاوااسکریپت - رخ دادن خطا و رفع آن
۴۱Scope در جاوااسکریپت
۴۲Hoisting یا جا به جایی کدها در جاوااسکریپت
۴۳استفاده از مد یا حالت سخت‌گیرانه (use strict) در جاوااسکریپت
۴۴کلمه کلیدی This در جاوااسکریپت
۴۵کلمه کلیدی Let در جاوااسکریپت
۴۶ثابت‌ها در جاوااسکریپت
۴۷تعریف توابع به صورت پیکان
۴۸کلاس‌ها در جاوااسکریپت
۴۹اشکال‌زدایی در جاوااسکریپت
۵۰راهنمای استایل و استانداردهای کدنویسی در جاوااسکریپت
۵۱بهترین تمرینات جاوااسکریپت
۵۲اشتباهات رایج در برنامه‌نویسی جاوااسکریپت
۵۳کارایی در جاوااسکریپت
۵۴کلمات رزرو شده در جاوااسکریپت
۵۵ورژن‌های جاوااسکریپت
۵۶ECMAScript 5 - JavaScript 5
۵۷ECMAScript 6 - ECMAScript 2015
۵۸جیسون (JSON) در جاوااسکریپت
فرم‌ها
۱فرم‌ها در جاوااسکریپت
۲API ارزشیابی در جاوااسکریپت
اشیاء (Object)
۱اشیاء در جاوااسکریپت
۲ویژگی‌های اشیاء در جاوااسکریپت
۳متدهای اشیاء در جاوااسکریپت
۴روش‌های دسترسی به شیء در جاوااسکریپت
۵سازنده‌های شیء در جاوااسکریپت
۶شکل اصلی شیء در جاوااسکریپت
۷متدهای شیء در ورژن ES5 جاوااسکریپت
تابع
۱تعریف تابع در جاوااسکریپت
۲پارامتر توابع در جاوااسکریپت
۳فراخوانی تابع در جاوااسکریپت
۴صدا کردن تابع در جاوااسکریپت
۵تابع Apply در جاوااسکریپت
۶بسته‌ها (به انگلیسی: Closures) در جاوااسکریپت
HTML DOM
۱HTML DOM در جاوااسکریپت
۲متدهای HTML DOM در جاوااسکریپت
۳HTML DOM Document در جاوااسکریپت
۴عناصر HTML DOM در جاوااسکریپت
۵reeeeeeeeeeeeeeee
۶تست
۷تست
۸تست
۹تست
۱۰تست
۱۱تست
۱۲تست
۱۳تست

متدهای کمکی برای نوع داده متنی یا رشته‌ای string به شما کمک می‌کند تا با این نوع از داده کار کنید. [۱]

محتویات

متدهای کمکی رشته‌ای (به انگلیسی: String) و ویژگی‌های کمکی

مقادیر اصلی (به انگلیسی: primitive) همانند عبارت "John Doe"، نمی‌توانند ویژگی یا متد داشته باشند (زیرا که آنها اشیاء (به انگلیسی: objects) نیستند).

اما با زبان جاوااسکریپت، متدها و ویژگی‌ها هم برای مقادیر اصلی (به انگلیسی: primitive) نیز در دسترس هستند، زیرا جاوااسکریپت زمانی که متدها و ویژگی‌ها را اجرا می‌کند با آن‌ها همانند یک شیء (به انگلیسی: object) برخورد می‌کند.

طول یک رشتهٔ متنی (به انگلیسی: String)

ویژگی​length​طول یک رشتهٔ متنی (به انگلیسی: string) را برمی‌گرداند:

مثال

var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sln = txt.length;

پیدا کردن یک رشتهٔ متنی درون یک رشته

متد​indexOf()​اندیس (موقعیت) نقطهٔ شروع یک متن به خصوص را در یک رشتهٔ متنی (به انگلیسی: string) برمی‌گرداند:

مثال

var str = "Please locate where 'locate' occurs!";
var pos = str.indexOf("locate");


متد​lastIndexOf()​موقعیت آخرین کاراکتر یک رشتهٔ متنی را درون یک متن بازمی‌گرداند:

مثال

var str = "Please locate where 'locate' occurs!";
var pos = str.lastIndexOf("locate");

هر دو متد​indexOf()​، و​lastIndexOf()​در صورتی که متن مورد نظر در درون رشتهٔ مورد نظر وجود نداشته باشد مقدار​-1​را به عنوان خروجی برمی‌گردانند.

مثال

var str = "Please locate where 'locate' occurs!";
var pos = str.lastIndexOf("John");

هر دو متد پارامتر دومی دارند که اندیس موقعیت شروع) برای جستجو در رشته را دریافت می‌کند:

مثال

var str = "Please locate where 'locate' occurs!";
var pos = str.indexOf("locate", 15);

متد​lastIndexOf()​عمل جستجو را از انتهای رشته (از آخر به اول) انجام می‌دهد، این بدان معناست که: اگر مقدار پارامتر دوم متد، عدد​15​باشد، عمل جستجو از اندیس (موقعیت) ۱۵ شروع می‌شود و عمل جستجو تا به ابتدای رشته ادامه می‌یابد.

مثال

var str = "Please locate where 'locate' occurs!";
var pos = str.lastIndexOf("locate", 15);

جستجوی یک رشته در یک رشتهٔ دیگر

متد​search()​یک رشتهٔ متنی را برای پیدا کردن یک مقدار به خصوص جستجو می‌کند و موقعیت یا اندیس نتیجه را برمی‌گرداند:

مثال

var str = "Please locate where 'locate' occurs!";
var pos = str.search("locate");

آیا این نکته را متوجه شدید؟

دو متد، ​indexOf()​و​search()​، باهم برابر هستند؟

آنها آرگومان‌ها (پارامترهای) یکسانی دارند، و مقدار یکسانی را به عنوان خروجی بازمی‌گردانند؟

اما این دو متد باهم برابر نیستند. در زیر تفاوت‌های این دو متد را می‌بینید:

  • متد​search()​نمی‌تواند پارامتر دومی را به عنوان اندیس یا موقعیت شروع جستجو دریافت کند.
  • متد​indexOf()​نمی‌تواند مقادیر سخت (عبارات با قاعده) را در عبارت‌های رشته‌ای یا متنی جستجو کند.

شما در مورد عبارات‌های با قاعده در فصل‌های آینده مطالب بیشتری را خواهید آموخت.

جداسازی بخش‌های داده‌های متنی یا رشته‌ای (به انگلیسی: String)

سه متد برای جداسازی یک بخش از یک رشتهٔ متنی (به انگلیسی: string) وجود دارد:

  • ​slice(start, end)​
  • ​substring(start, end)​
  • ​substr(start, length)​

متد ()slice

متد​slice()​یک بخش از یک رشتهٔ متنی (به انگلیسی: string) را جدا می‌کند و بخش جدا شده را به عنوان یک رشتهٔ متنی جدید برمی‌گرداند.

این متد دو پارامتر دریافت می‌کند: نقطه شروع، و نقطه پایان (نقطه پایان را شامل نمی‌شود).

این مثال، یک بخشی از رشتهٔ متنی را از اندیس شمارهٔ هفت تا اندیس شماره دوازده (۱–۱۳) را جدا می‌کند:

مثال

var str = "Apple, Banana, Kiwi";
var res = str.slice(7, 13);

نتیجه متغیر res برابر خواهد بود با:

Banana


اگر یک پارامتر عددی منفی باشد، اندیس (موقعیت) از انتهای رشته شمرده می‌شود.

این مثال بخشی از رشتهٔ متنی را با اندیس ۱۲- تا ۶- را جدا می‌کند:

مثال

var str = "Apple, Banana, Kiwi";
var res = str.slice(-12, -6);

نتیجه متغیر res برابر خواهد بود با:

Banana

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

مثال

var res = str.slice(7);

یا، شمارش از اندیس آخر رشته صورت بگیرد:

مثال

var res = str.slice(-12);


متد ()substring

متد​substring()​بسیار شبیه به متد​slice()​است.

تفاوت این دو متد در این است که متد​substring()​نمی‌تواند اندیس‌های منفی را به عنوان پارامتر یا آرگومان قبول کند.

مثال

var str = "Apple, Banana, Kiwi";
var res = str.substring(7, 13);

نتیجه متغیر res برابر خواهد بود با:

Banana

اگر شما پارامتر دوم را ننویسید، متد​substring()​از اندیسی که پارامتر اول به آن اشاره می‌کند تا به بعد را جدا می‌کند.

متد ()substr

متد​substr()​بسیار شبیه به​Slice()​است.

تفاوت بین این دو متد این است که پارامتر دوم طول بخش جدا شده را مشخص می‌کند.

مثال

var str = "Apple, Banana, Kiwi";
var res = str.substr(7, 6);

نتیجه متغیر res برابر خواهد بود با:

Banana

اگر شما پارامتر دوم را در نظر نگیرید، متد​substr()​از اندیسی که پارامتر اول به آن اشاره می‌کند، شروع می‌کند و ما بقی رشته را نیز جدا می‌کند.

مثال

var str = "Apple, Banana, Kiwi";
var res = str.substr(7);

نتیجه متغیر res برابر خواهد بود با:

Banana, Kiwi

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

مثال

var str = "Apple, Banana, Kiwi";
var res = str.substr(-4);

نتیجه متغیر res برابر خواهد بود با:

Kiwi

جابه‌جا کردن محتوای رشته‌های متنی یا String

متد​replace()​یک مقدار به خصوص را با یک مقدار دیگر در یک رشتهٔ متنی (به انگلیسی: string) جابه‌جا می‌کند:

مثال

str = "Please visit Microsoft!";
var n = str.replace("Microsoft", "Wikicod");


به صورت پیشفرض، متد​replace()​تنها اولین نتیجه برابر را جابه‌جا می‌کند:

مثال

str = "Please visit Microsoft and Microsoft!";
var n = str.replace("Microsoft", "Wikicod");

به صورت پیشفرض، متد​replace()​یک متد حساس به حروف کوچک یا بزرگ (به انگلیسی: case sensitive) است. نوشتن کلمه MICROSOFT (با حروف بزرگ) برای رشتهٔ متنی در مثال زیر کار نخواهد کرد:

مثال

str = "Please visit Microsoft!";
var n = str.replace("MICROSOFT", "Wikicod");

برای این‌که هنگام جابه‌جایی رشته‌ها، حساسیت به حروف کوچک و بزرگ در نظر گرفته نشود، از یک عبارت با قاعده به وسیلهٔ​/i​(عدم حساسیت به حروف کوچک و بزرگ) می‌بایست استفاده کنید:

مثال

str = "Please visit Microsoft!";
var n = str.replace(/MICROSOFT/i, "Wikicod");

توجه داشته باشید که عبارت‌های با قاعده بدون کوتیشن (​'​یا​″​) نوشته می‌شوند.

برای اینکه تمامی نتایج یکسان جابه‌جا شوند، از عبارت با قاعده با​/g​(که مخفف تمامی نتایج همسان (به انگلیسی: global match)) است استفاده کنید:

مثال

str = "Please visit Microsoft and Microsoft!";
var n = str.replace(/Microsoft/g, "Wikicod");


تبدیل به حروف کوچک و بزرگ

با استفاده از متدتمام حروف یک رشتهٔ متنی به حروف بزرگ تبدیل می‌شوند:

مثال

var text1 = "Hello World!";       // String
var text2 = text1.toUpperCase();  // text2 is text1 converted to upper

با استفاده از متد​toLowerCase()​، تمامی حروف یک رشتهٔ متنی به حروف کوچک تبدیل می‌شوند:

مثال

var text1 = "Hello World!";       // String
var text2 = text1.toLowerCase();  // text2 is text1 converted to lower

متد ()concat

متد​concat()​دو یا چند رشتهٔ متنی را به یکدیگر می‌چسباند:

مثال

var text1 = "Hello";
var text2 = "World";
var text3 = text1.concat(" ", text2);

متد​concat()​می‌تواند به جای عملگر + استفاده شود. دو خط زیر کد کار یکسانی را انجام می‌دهند:

مثال

var text = "Hello" + " " + "World!";
var text = "Hello".concat(" ", "World!");


متد ()trim

متد​trim()​فضاهای خالی دو طرف یک رشتهٔ متنی را پاک می‌کند:

مثال

var str = "       Hello World!        ";
alert(str.trim());


اگر شما نیاز دارید که کد شما حتما در مرورگر اینترنت اکسپلور ورژن هشت پشتیبانی شود، شما می‌توانید از متد​replace()​به همراه یک عبارت با قاعده به جای متد​trim()​استفاده کنید.

var str = "       Hello World!        ";
alert(str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''));

شما همچنین می‌توانید از روش جابه‌جایی بالا برای اضافه کردن یک تابع trim به​String.prototype​در جاوااسکریپت استفاده کنید:

مثال

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}
var str = "       Hello World!        ";
alert(str.trim());

جداسازی کاراکترهای یک رشتهٔ متنی

برای جداسازی کاراکترهای یک رشتهٔ متنی سه متد در جاوااسکریپت وجود دارد:

  • ​charAt(position)​
  • ​charCodeAt(position)​
  • ویژگی​access [ ]​

متد ()charAt

متد​charAt()​یک کاراکتر را در یک اندیس (موقعیت به خصوص) در یک رشتهٔ متنی برمی‌گرداند:

مثال

var str = "HELLO WORLD";
str.charAt(0);            // returns H

متد ()charCodeAt

متد​charCodeAt()​مقدار یونیکد یک کاراکتر به خصوص در یک موقعیت یا اندیس در یک رشته را برمی‌گرداند.

این متد یک کد بر حسب UTF-16 (عددی صحیح بین ۰ و ۶۵۵۳۵) را برمی‌گرداند.

مثال

var str = "HELLO WORLD";

str.charCodeAt(0);         // returns 72

ویژگی Access

ECMAScript 5 که در سال ۲۰۰۹ منتشر شد، اجازه استفاده از عملگر دسترسی (به انگلیسی: [ ] access) را برای متن‌ها می‌دهد:

مثال

var str = "HELLO WORLD";
str[0];                   // returns H


مثال

var str = "HELLO WORLD";
str[0] = "A";             // Gives no error, but does not work
str[0];                   // returns H


تبدیل یک رشتهٔ متنی به یک آرایه

یک رشتهٔ متنی را می‌توان به وسیلهٔ متد​split()​به یک آرایه تبدیل کرد.

مثال

var txt = "a,b,c,d,e";   // String
txt.split(",");          // Split on commas
txt.split(" ");          // Split on spaces
txt.split("|");          // Split on pipe

اگر جدا کننده نوشته نشود، آرایه بازگشتی کل رشتهٔ متنی را در اندیس [0] نگهداری خواهد کرد.

اگر جدا کننده​" "​باشد ، آرایه بازگشتی آرایه‌ای از تک کاراکترها خواهد بود:

مثال

var txt = "Hello";       // String
txt.split("");           // Split in characters

مرجع کامل در مورد رشته‌های متنی (به انگلیسی: String)

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

این مرجع شامل توضیحات و مثال‌هایی از تمامی ویژگی‌های رشتهٔ متنی و متدهاست.

منابع آموزشی