آموزش جاوا اسکریپت مبتدی : متدهای رشتهای مفید
حالا که به اصول اولیه رشتهها نگاهی انداختیم، بیایید یک قدم جلوتر برویم و به این فکر کنیم که چه عملیات مفیدی میتوانیم روی رشتهها با متدهای داخلی انجام دهیم، مانند پیدا کردن طول یک رشته متنی، اتصال و تقسیم رشتهها، جایگزینی یک کاراکتر در یک رشته با کاراکتر دیگر و موارد دیگر.
بیشتر مقادیر را میتوان مانند اشیاء در جاوا اسکریپت استفاده کرد. وقتی یک رشته ایجاد میکنید، برای مثال با استفاده از
اگرچه خود متغیر یک شیء نیست، اما به دلیل قابلیت استفاده به عنوان یک شیء در هنگام دسترسی به ویژگیها، تعداد زیادی ویژگی و متد در دسترس دارد. اگر به صفحه شیء String بروید و لیست کنار صفحه را نگاه کنید، میتوانید این را ببینید!
حالا، قبل از اینکه مغزتان شروع به ذوب شدن کند، نگران نباشید! واقعاً نیازی نیست که در اوایل سفر یادگیری خود در مورد بیشتر این موارد بدانید. اما چند مورد وجود دارد که به طور بالقوه اغلب از آنها استفاده خواهید کرد که در اینجا به آنها خواهیم پرداخت.
بیایید چند مثال را در کنسول توسعهدهنده مرورگر وارد کنیم.
این کار آسان است - شما از ویژگی length استفاده میکنید. خطوط زیر را امتحان کنید:
این باید عدد ۷ را برگرداند، زیرا "mozilla" هفت کاراکتر دارد. این به دلایل زیادی مفید است؛ برای مثال، ممکن است بخواهید طول یک سری نام را پیدا کنید تا بتوانید آنها را به ترتیب طول نمایش دهید، یا اگر نام کاربری که در یک فیلد فرم وارد کرده از یک طول مشخص بیشتر باشد، به کاربر اطلاع دهید که خیلی طولانی است.
بازیابی یک کاراکتر رشتهای خاص
در یک نکته مرتبط، میتوانید هر کاراکتری را درون یک رشته با استفاده از نمادگذاری براکت مربع برگردانید - این بدان معناست که شما براکتهای مربع ([]) را در انتهای نام متغیر خود قرار میدهید. درون براکتهای مربع، شماره کاراکتری را که میخواهید برگردانید، قرار میدهید، بنابراین برای مثال برای بازیابی حرف اول، این کار را انجام میدهید:
به یاد داشته باشید: کامپیوترها از ۰ میشمارند، نه از ۱!
برای بازیابی آخرین کاراکتر هر رشته، میتوانیم از خط زیر استفاده کنیم و این تکنیک را با ویژگی length که در بالا بررسی کردیم، ترکیب کنیم:
طول رشته "mozilla" برابر با ۷ است، اما از آنجا که شمارش از ۰ شروع میشود، موقعیت آخرین کاراکتر ۶ است؛ استفاده از length-1 آخرین کاراکتر را به ما میدهد.
بررسی اینکه آیا یک رشته حاوی زیررشته است یا خیر
گاهی اوقات میخواهید بفهمید که آیا یک رشته کوچکتر درون یک رشته بزرگتر وجود دارد یا خیر (معمولاً میگوییم آیا یک زیررشته درون یک رشته وجود دارد یا خیر). این کار را میتوان با استفاده از متد انجام داد که یک پارامتر واحد میگیرد - زیررشتهای که میخواهید جستجو کنید.
اگر رشته شامل زیررشته باشد، مقدار true و در غیر این صورت مقدار false را برمیگرداند.
اغلب میخواهید بدانید که آیا یک رشته با یک زیررشته خاص شروع میشود یا پایان مییابد. این یک نیاز رایج است که دو متد ویژه برای این کار وجود دارد:
و :
پیدا کردن موقعیت یک زیر رشته در یک رشته
شما میتوانید با استفاده از متد موقعیت یک زیررشته را درون یک رشته بزرگتر پیدا کنید. این متد دو پارامتر میگیرد - زیررشتهای که میخواهید جستجو کنید، و یک پارامتر اختیاری که نقطه شروع جستجو را مشخص میکند.
اگر رشته شامل زیررشته باشد، اندیس اولین محل وقوع زیررشته را برمیگرداند. اگر رشته شامل زیررشته نباشد، عدد ۱- را برمیگرداند.
از صفر شروع میکنیم، اگر تعداد کاراکترها (شامل فاصله) را از ابتدای رشته بشماریم، اولین مورد وقوع زیررشته "developers" در اندیس 20 است.
از طرف دیگر، این تابع مقدار ۱- را برمیگرداند زیرا کاراکتر x در رشته وجود ندارد.
حالا که میدانید چگونه اولین رخداد یک زیررشته را پیدا کنید، چگونه میتوانید رخدادهای بعدی را پیدا کنید؟ میتوانید این کار را با ارسال مقداری بزرگتر از اندیس رخداد قبلی به عنوان پارامتر دوم به متد انجام دهید.
در اینجا به متد میگوییم که زیررشتهی "developers" را از اندیس ۲۱ (firstOccurrence + ۱) جستجو کند و متد اندیس ۳۵ را برمیگرداند.
استخراج یک زیررشته از یک رشته
شما میتوانید با استفاده از متد یک زیررشته را از یک رشته استخراج کنید. شما آن را به صورت زیر ارسال میکنید:
- شاخصی که استخراج از آن شروع میشود
- شاخصی که استخراج از آن متوقف میشود. این منحصر به فرد است، به این معنی که کاراکتر موجود در این شاخص در زیررشته استخراج شده گنجانده نشده است.
برای مثال:
کاراکتر موجود در اندیس ۱، "o" و کاراکتر موجود در اندیس ۴، "l" است. بنابراین، ما تمام کاراکترهایی که از "o" شروع میشوند و درست قبل از "l" تمام میشوند را استخراج میکنیم و "ozi" را به دست میآوریم.
اگر میدانید که میخواهید تمام کاراکترهای باقیمانده در یک رشته پس از یک کاراکتر خاص را استخراج کنید، لازم نیست پارامتر دوم را وارد کنید. در عوض، فقط باید موقعیت کاراکتر را از جایی که میخواهید کاراکترهای باقیمانده در یک رشته را استخراج کنید، وارد کنید. موارد زیر را امتحان کنید:
این تابع مقدار "zilla" را برمیگرداند - دلیلش این است که موقعیت کاراکتری عدد ۲، حرف "z" است و چون پارامتر دوم را وارد نکردهاید، زیررشتهای که برگردانده میشود، تمام کاراکترهای باقیمانده در رشته است.
تابع گزینههای دیگری هم دارد؛ برای دیدن اطلاعات بیشتر، صفحه را مطالعه کنید.
متدهای رشتهای و یک رشته را میگیرند و تمام کاراکترها را به ترتیب به حروف کوچک یا بزرگ تبدیل میکنند. این میتواند برای مثال مفید باشد اگر میخواهید تمام دادههای وارد شده توسط کاربر را قبل از ذخیره در پایگاه داده نرمالسازی کنید.
بیایید خطوط زیر را وارد کنیم تا ببینیم چه اتفاقی میافتد:
بهروزرسانی بخشهایی از یک رشته
شما میتوانید با استفاده از متد یک زیررشته درون یک رشته را با زیررشته دیگری جایگزین کنید.
در این مثال، ما دو پارامتر ارائه میدهیم - رشتهای که میخواهیم جایگزین کنیم و رشتهای که میخواهیم آن را با آن جایگزین کنیم:
توجه داشته باشید که تابع مانند بسیاری از متدهای رشتهای، رشتهای که روی آن فراخوانی شده را تغییر نمیدهد، بلکه یک رشته جدید برمیگرداند. اگر میخواهید متغیر browserType اصلی را بهروزرسانی کنید، باید کاری شبیه به این انجام دهید:
همچنین توجه داشته باشید که اکنون باید browserType را با استفاده از let و نه const تعریف کنیم، زیرا در حال اختصاص مجدد آن هستیم.
توجه داشته باشید که در این فرم فقط اولین رخداد زیررشته را تغییر میدهد. اگر میخواهید همه رخدادها را تغییر دهید، میتوانید از استفاده کنید:
در این بخش، شما را به نوشتن کد دستکاری رشتهها دعوت میکنیم. در هر تمرین زیر، آرایهای از رشتهها و حلقهای داریم که هر مقدار را در آرایه پردازش کرده و در یک لیست نقطهدار نمایش میدهد. در حال حاضر نیازی به درک آرایهها یا حلقهها ندارید - این موارد در مقالات آینده توضیح داده خواهند شد. تنها کاری که باید در هر مورد انجام دهید این است که کدی بنویسید که رشتهها را با فرمتی که میخواهیم در خروجی نمایش دهد.
هر مثال را در Playground با استفاده از دکمه "تست کد" در بالای صفحه باز کنید، سپس دستورالعملها را برای حل مشکل دنبال کنید. اگر در هر مورد گیر کردید، میتوانید راهحلهای زیر مثال زنده را در هر مورد مشاهده کنید.
اگر اشتباه کردید و نتوانستید دوباره آن را اجرا کنید، میتوانید از دکمه "refresh" در PDN برای تنظیم مجدد کد استفاده کنید.
فیلتر کردن پیامهای تبریک
در تمرین اول، از یک مثال ساده شروع میکنیم - ما آرایهای از پیامهای کارت تبریک داریم، اما میخواهیم آنها را طوری مرتب کنیم که فقط پیامهای کریسمس را فهرست کنند. میخواهیم شما یک تست شرطی را درون ساختار پر کنید تا هر رشته را بررسی کند و فقط در صورتی که پیام کریسمس باشد، آن را در لیست چاپ کند.
به این فکر کنید که چگونه میتوانید آزمایش کنید که آیا پیام در هر مورد، پیام کریسمس است یا خیر. چه رشتهای در تمام آن پیامها وجود دارد و از چه روشی میتوانید برای آزمایش وجود آن استفاده کنید؟
این تمرین شامل نام شهرهای بریتانیا است، اما حروف بزرگ و کوچک کاملاً به هم ریخته است. ما میخواهیم آنها را طوری تغییر دهید که همه حروف کوچک باشند، به جز یک حرف اول بزرگ. یک راه خوب برای انجام این کار این است که:
کل رشته موجود در متغیر city را به حروف کوچک تبدیل کنید و آن را در یک متغیر جدید ذخیره کنید.
حرف اول رشته را در این متغیر جدید بگیرید و آن را در یک متغیر دیگر ذخیره کنید.
با استفاده از این متغیر جدید به عنوان زیررشته، حرف اول رشته کوچک را با حرف اول رشته کوچک که به حروف بزرگ تغییر یافته است، جایگزین کنید. نتیجه این روش جایگزینی را در یک متغیر جدید دیگر ذخیره کنید.
مقدار متغیر result را به برابر با نتیجه نهایی تغییر دهید، نه شهر.
یک نکته - پارامترهای متدهای رشتهای لازم نیست حتماً رشتهای باشند؛ آنها همچنین میتوانند متغیر باشند، یا حتی متغیرهایی باشند که متدی روی آنها فراخوانی میشود.
ساخت رشتههای جدید از قطعات
در این تمرین آخر، آرایه شامل رشتههایی از اطلاعات در مورد ایستگاههای قطار در شمال انگلستان است. این رشتهها اقلام دادهای هستند که شامل کد سه حرفی ایستگاه، به دنبال آن مقداری داده قابل خواندن توسط ماشین، و به دنبال آن یک نقطه ویرگول و در نهایت نام ایستگاه قابل خواندن توسط انسان میشوند. برای مثال:
ما میخواهیم کد و نام ایستگاه را استخراج کنیم و آنها را در یک رشته با ساختار زیر قرار دهیم:
توصیه میکنیم این کار را به این صورت انجام دهید:
کد ایستگاه سه حرفی را استخراج کرده و آن را در یک متغیر جدید ذخیره کنید.
شماره شاخص کاراکتر نقطه ویرگول را پیدا کنید.
نام ایستگاه قابل خواندن توسط انسان را با استفاده از شماره شاخص کاراکتر نقطه ویرگول به عنوان نقطه مرجع استخراج کرده و آن را در یک متغیر جدید ذخیره کنید.
دو متغیر جدید و یک رشته را به هم متصل کنید تا رشته نهایی ایجاد شود.
مقدار متغیر نتیجه را به رشته نهایی تغییر دهید، نه به ایستگاه.