از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
نویسه های غیر عددی را از یک رشته در جاوا اسکریپت حذف کنید
سرفصلهای مطلب
معرفی
فرض کنید از یک کاربر ورودی دریافت میکنید و انتظار دارید که یک شماره ارسال کند. عاقلانه است که از آنها انتظار داشته باشید چیزی غیر از یک عدد وارد کنند. از این گذشته، کاربران در پیروی از دستورالعمل ها خیلی خوب نیستند. پس با ورودی چه کار می کنید؟ یک گزینه حذف تمام کاراکترهای غیر عددی از رشته مانند فاصله، خطوط جدید، کاما و نقطه است. در این بایت، ما چند روش را مشاهده خواهیم کرد که از طریق آنها می توانید این کار را انجام دهید.
چرا کاراکترهای غیر عددی را حذف کنیم؟
ممکن است تعجب کنید که چرا باید کاراکترهای غیر عددی را از یک رشته حذف کرد. خوب، در برنامه نویسی و تجزیه و تحلیل داده ها، داده های پاک و سازگار پادشاه است. کاراکترهای غیرعددی مخلوط با داده های عددی تقریباً به طور قطع باعث مشکلات یا ناهماهنگی در پردازش شما می شوند. برای مثال، اگر روی پروژهای کار میکنید که به ورودی عددی نیاز دارد و کاربر «123abc» را وارد میکند، برنامه شما احتمالاً نمیتواند process آن را، حداقل نه به درستی.
روش حذف کاراکترهای غیر عددی از یک رشته
در جاوا اسکریپت راه های مختلفی برای حذف کاراکترهای غیر عددی از یک رشته وجود دارد. در بخش های بعدی تعدادی از این روش ها را بررسی خواهیم کرد.
با استفاده از تقسیم، فیلتر و پیوستن
من با گفتن این شروع می کنم راه توصیه شده نیست برای انجام این کار (به بخش بعدی برای آن مراجعه کنید)، اما به عنوان یک تمرین جالب برای برنامه نویسان جدید عمل می کند.
یک راه برای حذف تمام کاراکترهای غیر عددی از یک رشته، فیلتر کردن آنها به صورت دستی است. با مراحل زیر می توانیم این کار را انجام دهیم:
- با استفاده از رشته ما را به آرایه تبدیل کنید
split('')
- هر کاراکتر غیر رقمی را با مقایسه آنها با معادل های رشته ای فیلتر کنید.
filter(...)
- آرایه به دست آمده را دوباره به یک رشته با
join('')
با هم، کد به شکل زیر خواهد بود:
let str = "123abc456def";
let newStr = str
.split('') // ('1','2','3', ... 'd','e','f')
.filter(s => s >= '0' && s <= '9') // ('1','2','3','4','5','6')
.join('') // "123456"
console.log(newStr); // Output: "123456"
همانطور که می بینید، ما می توانیم دستکاری های آرایه را برای رسیدن به آنچه نیاز داریم اعمال کنیم. با این حال، این بسیار پرمخاطب تر و مستعد خطا از آن چیزی است که می تواند باشد. بخش بعدی روش بسیار شهودی تر و ساده تر را توضیح خواهد داد.
با استفاده از روش جایگزینی
را replace()
متد در جاوا اسکریپت برای برگرداندن یک رشته جدید با برخی یا همه مطابقت های یک الگو که با یک رشته داده شده جایگزین شده است استفاده می شود. ما می توانیم از این روش برای جایگزینی تمام کاراکترهای غیر عددی در یک رشته با یک رشته خالی استفاده کنیم ""
. در اینجا روش انجام آن آمده است:
let str = "123abc456def";
let newStr = str.replace(/\D/g, "");
console.log(newStr); // Output: "123456"
در این قطعه کد از کد استفاده می کنیم \D
کاراکتر در یک عبارت منظم (regex) برای مطابقت با هر کاراکتری که یک رقم نیست. را g
پرچم (“جهانی”) برای مطابقت استفاده می شود همه اتفاقات، بر خلاف اولی.
به طور متناوب، شما همچنین می توانید استفاده کنید (^0-9)
الگویی برای مطابقت با هر کاراکتری که رقمی نیست. را ^
نماد داخل پرانتز مربع الگو را نفی می کند، به این معنی که با هر چیزی که در محدوده 0-9 نباشد مطابقت دارد.
حذف کاراکترهای غیر عددی خاص
گاهی ممکن است ما نه می خواهید همه کاراکترهای غیر عددی را از یک رشته حذف کنید، اما فقط مسلم – قطعی کاراکترهای غیر عددی در این مورد، میتوانیم عبارت معمولی خود را طوری تغییر دهیم که فقط کاراکترهای خاصی را که میخواهیم حذف کنیم، هدف قرار دهیم.
به عنوان مثال، فرض کنید میخواهیم همه نویسههای «a»، «b» و «c» را از رشته خود حذف کنیم. در اینجا روش انجام این کار آمده است:
let str = "123abc456def";
let newStr = str.replace(/(abc)/g, "");
console.log(newStr); // "123456def"
در این مثال عبارت منظم /(abc)/g
با هر رخدادی از “a”، “b” یا “c” مطابقت دارد، و replace()
متد این کاراکترها را با یک رشته خالی جایگزین می کند و به طور موثر آنها را حذف می کند.
حذف کاراکترهای غیر عددی به جز نمادهای خاص
در مورد یک تغییر دیگر، ما می خواهیم برخی از کاراکترهای غیر عددی را حفظ کنیم و در عین حال همه کاراکترهای دیگر را حذف کنیم. این امر هنگام کار با رشته هایی که نشان دهنده چیزهایی مانند شماره تلفن یا مقادیر پولی هستند، رایج است، جایی که نمادهایی مانند ‘+’ یا ‘$’ برای قالب بندی شماره مهم هستند.
به عنوان مثال، فرض کنید می خواهیم همه کاراکترهای غیر عددی را از یک رشته حذف کنیم، به جز «+»، «-» و «.». حفظ این کاراکترها علامت و رقم اعشار عدد را حفظ می کند.
با کد زیر می توانیم این کار را انجام دهیم:
let str = "+123.(456789)";
let newStr = str.replace(/(^0-9\+\-\.)/g, "");
console.log(newStr); // "+123.456789"
در این مورد، عبارت منظم /(^0-9\+\-\.)/g
با هر کاراکتری که عدد نیست، «+»، «-» یا «.» مطابقت دارد. دوباره، replace()
متد سپس این کاراکترها را با یک رشته خالی جایگزین می کند.
کاراکترهای یونیکد و غیر اسکی
هنگام کار با رشته ها در جاوا اسکریپت، باید به خاطر داشته باشید که همه کاراکترها یکسان ایجاد نمی شوند. جاوا اسکریپت از یونیکد استفاده می کند، استانداردی که شامل طیف وسیع تری از کاراکترها نسبت به ASCII است. این شامل نویسههای غیر عددی مانند ایموجیها، حروف برجسته و نویسههای خطهای غیر لاتین است.
اگر رشته شما شامل این نوع کاراکترها است، باید عبارت منظم خود را برای مدیریت آنها تغییر دهید. به عنوان مثال، برای حذف تمام کاراکترهای غیر عددی به جز ایموجی، می توانید از کد زیر استفاده کنید:
let str = "123🙂456🙃789";
let newStr = str.replace(/(^\d\p{So})/gu, "");
console.log(newStr); // "123🙂456🙃789"
در این مورد، عبارت منظم /(^\d\p{So})/gu
استفاده می کند \p{So}
فرار از ویژگی یونیکد برای مطابقت با هر کاراکتری که یک عدد یا نماد نیست.
توجه داشته باشید: فرار از ویژگی یونیکد یک ویژگی نسبتاً جدید در جاوا اسکریپت است و ممکن است در همه محیط ها پشتیبانی نشود. قبل از استفاده از آنها در کد تولید، حتماً سازگاری را بررسی کنید.
نتیجه
در این بایت، از عبارات منظم در جاوا اسکریپت استفاده کردیم تا نشان دهیم چگونه می توان از آنها برای حذف کاراکترهای غیر عددی از رشته ها استفاده کرد. ما روش حذف کاراکترهای خاص، روش نگه داشتن نمادهای خاص و حتی روش مدیریت کاراکترهای Unicode و غیرASCII را دیده ایم.
(برچسبها برای ترجمه)# جاوا اسکریپت
منتشر شده در 1402-12-28 14:35:05