javascriptString search and sliceجستوجو و برش رشته در جاوااسکریپت
جستوجو و برش رشته در جاوااسکریپت با includes، indexOf و slice؛ اندیس صفر، نتیجهٔ منفی یک و مرز پایان را با مثال نام یک درس یاد بگیرید.
مفهوم به زبان ساده
برای پیدا کردن بخش مشخصی از عنوان یا نام فایل، ابتدا پرسش خود را روشن کنید: آیا متن وجود دارد یا جای آن را لازم دارید؟ includes پاسخ بولی میدهد؛ indexOf جای نخستین تطبیق را برمیگرداند و در نبود تطبیق منفی یک میدهد. اندیس صفر یک نتیجهٔ موفق است، چون متن از همان ابتدا پیدا شده است.
وقتی محدودهٔ مورد نظر معلوم شد، slice بخشی از رشته را بهصورت متن تازه برمیگرداند. اندیس آغاز داخل نتیجه است و اندیس پایان داخل آن نیست. اندیس منفی از انتهای رشته حساب میشود. در مثال، از نام یک درس، پیشوند و پسوند را جدا میکنیم؛ این کار نام اصلی را تغییر نمیدهد.
substring ابزار مشابهی است، ولی قواعد مرزهایش کاملاً یکسان نیست: مقدار منفی را صفر در نظر میگیرد و اگر آغاز از پایان بزرگتر باشد، آنها را جابهجا میکند. برای شروع یک روش را آگاهانه انتخاب کنید و روی رشتهٔ خالی، متن پیدانشده و مرز صفر هم آزمایش داشته باشید. این جستوجو به شکل دقیق حروف حساس است؛ جستوجوی فارسی ممکن است سیاست جداگانهای برای یکسانسازی حروف لازم داشته باشد.
کجا به کار میآید؟
- پیداکردن واژه در عنوان درس یا برچسب فایل
- جداکردن بخشی از متن با مرزهای مشخص
از تعریف تا یک مثال واقعی
const fileLabel = 'lesson-01-js';
console.log(fileLabel.includes('js'));
console.log(fileLabel.indexOf('lesson'));
console.log(fileLabel.slice(0, 6));
console.log(fileLabel.slice(-2));
console.log(fileLabel.substring(6, 0));
true 0 lesson js lesson
این مثال چطور کار میکند؟
includes وجود js را تأیید میکند.
indexOf برای lesson صفر میدهد؛ تطبیق از ابتدای رشته شروع شده است.
slice از صفر تا پیش از اندیس شش، lesson را میسازد.
برش منفی پسوند js را میگیرد؛ substring مرزهای جابهجا را مرتب میکند.
اشتباه رایج
نتیجهٔ indexOf را مستقیماً در if نگذارید؛ صفر falsy و منفی یک truthy است. برای وجود تطبیق از result !== -1 یا includes استفاده کنید.
این را به خاطر بسپارید
وجود متن، جای متن و برش متن سه پرسش جدا با خروجیهای متفاوتاند.