۵ کتابخانه دستکاری رشته برای جاوا اسکریپت | فهرست کاربردی
کار با رشتهها میتواند پیچیده باشد، چون کاربردهای بسیار متفاوتی دارند. برای نمونه یک وظیفه ساده مانند تبدیل یک رشته به «حالت شتری» (Camel Case) میتواند نیازمند چندین خط کد باشد. در این نوشته با 5 کتابخانه دستکاری رشته برای جاوا اسکریپت آشنا خواهیم شد که انجام این وظایف را برای ما آسان میسازند. به قطعه کد زیر توجه کنید:
1function camelize(str) {
2 return str.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function(match, index) {
3 if (+match === 0) return ""; // or if (/\s+/.test(match)) for white spaces
4 return index === 0 ? match.toLowerCase() : match.toUpperCase();
5 });
6}
قطعه کد فوق به ظاهر مشکلی ایجاد نخواهد کرد، اما زمانی که رشته مورد نظر ما به صورت ---Foo---bAr--- باشد، نمیتواند حالت شتری را ایجاد کند.
به همین دلیل میبینید که استفاده از کتابخانههای دستکاری رشته در این موارد بسیار به کمک ما میآید. استفاده از این کتابخانهها موجب میشود که پیادهسازی دستکاری پیچیده رشتهها و همچنین در نظر گرفتن همه کاربردهای یک مسئله آسان باشد. به این ترتیب کار شما آسانتر میشود، زیرا تنها به فراخوانی یک متد منفرد برای به دست آوردن راهحل کاری نیاز دارید. در ادامه برخی از این کتابخانهها را معرفی کرده و کاربردهای آنها را بررسی میکنیم.
ساخت کامپوننتهای دستکاری رشته با قابلیت استفاده مجدد
اگر قطعه کدی نوشتهاید که فکر میکنید میتواند مفید باشد، بهتر است آن را درون یک کامپوننت از فریمورک دلخواه (ریاکت، انگولار، ویو و غیره) قرار دهید. به این ترتیب یک کامپوننت با قابلیت استفاده مجدد به همراه API اعلانی دارید که آماده استفاده است.
این کامپوننت را میتوانید روی هابهای کامپوننت مانند Bit.dev به همراه مستندات و کدهای نمونه منتشر کنید. همچنین با انتشار این کامپوننت، میتوانید در همه پروژههایی که استفاده میکنید، آن را بهروزرسانی کرده و با تیم خود به اشتراک بگذارید.
کتابخانه String.js
String.js یا به طور اختصاری S یک کتابخانه سبک جاوا اسکریپت با حجم کمتر از 5 کیلوبایت است که برای مرورگر یا Node.js ارائه شده و متدهای رشتهای اضافی را در اختیار توسعهدهندگان قرار میدهد.
نصب
برای نصب این کتابخانه میتوانید از دستور زیر استفاده کنید:
npm i string
متدهای مهم
در این بخش متدهای مهم این کتابخانه را به همراه کدهای نمونه معرفی میکنیم.
between(left, right)
این متد بخشی از رشته را که بین دو مکان left و right قرار دارد، استخراج میکند. برای نمونه میتوان از این متد برای به دست آوردن عناصر بین تگهای HTML استفاده کرد.
1var S = require('string');
2S('<a>This is a link</a>').between('<a>', '</a>').s
3// 'This is a link'
()camelize
این متد تمام کاراکترهای زیرخط یا خط تیره را حذف کرده و رشته را به حالت شتری تبدیل میکند. این تابع را میتوان برای حل مسئلهای که در ابتدای این مقاله مورد اشاره قرار گرفت، استفاده کرد:
1var S = require('string');
2S('---Foo---bAr---').camelize().s;
3//'fooBar'
()humanize
این متد ورودی را به شکلی تبدیل میکند که خواندن آن برای انسان آسان باشد. این تابع از صفر تا صد در این کتابخانه پیادهسازی شده است و قطعاً نیازمند تعداد خطوط کد زیادی است.
1var S = require('string');
2S(' capitalize dash-CamelCase_underscore trim ').humanize().s //'Capitalize dash camel case underscore trim'
()stripPunctuation
این متد همه علائم سجاوندی را از رشته ورودی حذف میکند. اگر این تابع را از صفر تا صد خودتان اجرا کنید، احتمال بالایی وجود دارد که یکی از علائم سجاوندی را فراموش کنید.
1var S = require('string');
2S('My, st[ring] *full* of %punct)').stripPunctuation().s;
3//My string full of punct
برای بررسی متدهای بیشتر به این صفحه (+) مراجعه کنید.
کتابخانه Voca
Voca یک کتابخانه جاوا اسکریپت برای دستکاری رشتهها است. کتابخانه Voca تابعهای مفیدی برای آسان ساختن عملیات دستکاری رشتهها ارائه کرده است که از آن جمله تابعهای change case، trim، pad، slugify، latinise sprintf’y، truncate، escape و موارد بسیار دیگر از این دست است. طراحی ماژولار آن به شما امکان میدهد که کل کتابخانه یا تابعهای منفرد را بارگذاری کنید تا بیلدهای اپلیکیشن با افزایش حجم یادی مواجه نشوند. این کتابخانه کاملاً تست شده است و مستندات خوبی به همراه پشتیبانی بلند مدت دارد.
نصب
برای نصب Voca از دستور زیر استفاده کنید:
npm i voca
متدهای مهم
در ادامه به برخی از متدهای مهمتر این کتابخانه میپردازیم.
Camel Case(String data)
این متد دادهها را به حالت شتری در میآورد:
1var v = require('voca');
2v.camelCase('foo Bar');
3// => 'fooBar'
4
5v.camelCase('FooBar');
6// => 'fooBar'
7
8v.camelCase('---Foo---bAr---');
9// => 'fooBar'
Latinise(String data)
این متد با حذف کاراکترهای غیر لاتین، موجب استاندارد شدن رشته میشود.
1var v = require('voca');
2v.latinise('cafe\u0301'); // or 'café'
3// => 'cafe'
4
5v.latinise('août décembre');
6// => 'aout decembre'
7
8v.latinise('как прекрасен этот мир');
9// => 'kak prekrasen etot mir'
isAlphaDigit(String data)
این متد وجود یا عدم وجود کاراکترهای حروفی و عددی را در data بررسی میکند.
1var v = require('voca');
2v.isAlphaDigit('year2020');
3// => true
4
5v.isAlphaDigit('1448');
6// => true
7
8v.isAlphaDigit('40-20');
9// => false
CountWords(String data)
این متد تعداد کلمات موجود در data را میشمارد.
1var v = require('voca');
2v.countWords('gravity can cross dimensions');
3// => 4
4
5v.countWords('GravityCanCrossDimensions');
6// => 4
7
8v.countWords('Gravity - can cross dimensions!');
9// => 4
EscapeRegExp(String data)
این متد کاراکترهای خاص عبارتهای منظم یعنی موارد زیر را در data رد میکند:
- [] / { } () * +?. \ ^ $ |
به مثال زیر توجه کنید:
1var v = require('voca');
2v.escapeRegExp('(hours)[minutes]{seconds}');
3// => '\(hours\)\[minutes\]\{seconds\}'
برای کسب اطلاعات بیشتر در مورد متدهای دیگر کتابخانه Voca به این صفحه (+) مراجعه کنید.
کتابخانه Anchorme.js
این یک کتابخانه کوچک و سریع جاوا اسکریپت است که به تشخیص لینکها/URL-ها، ایمیلها در متن و تبدیل آنها به لینکهای HTML قابل کلیک دیگر کمک میکند. فهرست خصوصیات این کتابخانه به شرح زیر هستند:
- این کتابخانه به کمترین موارد «مثبت نارست» حساس است.
- این کتابخانه URL-ها و ایمیلها را با لیست کامل IANA تطبیق داده و اعتبارسنجی میکند.
- کتابخانه Anchorme.js در صورت وجود شمارههای پورت آنها را اعتبارسنجی میکند.
- این کتابخانه شمارههای هشتتایی IP را در صورت وجود اعتبارسنجی میکند.
- روی URL-های با الفبای غیر لاتین نیز عمل میکند.
نصب
برای نصب این کتابخانه از دستور زیر استفاده کنید:
npm i anchorme
کاربرد
در ادامه نمونهای از کاربرد این کتابخانه را مشاهده میکنید:
1import anchorme from "anchorme";
2//or
3//var anchorme = require("anchorme").default;
4const input = "some text with a link.com";
5const resultA = anchorme(input);
6//some text with a <a href="http://link.com">link.com</a>
شما میتوانید اکستنشنهای دیگری را برای سفارشیسازی بیشتر ارسال کنید.
کتابخانه Underscore String
Underscore.string یک اکستنشن دستکاری رشته برای جاوا اسکریپت است که میتوانید با یا بدون Underscore.js استفاده کنید. کتابخانه Underscore.string یک کتابخانه جاوا اسکریپت برای دستکاری آسان رشتهها و یک اکستنشن برای Underscore.js است که از Prototype.js، Right.js و Underscore الهام گرفته است.
کتابخانه Underscore چند تابع مفید به نامهای capitalize، clean، includes، count، escapeHTML، unescapeHTML، insert، splice، startsWith، endsWith، titleize، trim، truncate و غیره ارائه کرده است.
نصب
برای نصب این کتابخانه باید از دستور زیر استفاده کنید:
npm install underscore.string
متدهای مهم
در ادامه برخی از متدهای مهم کتابخانه Underscore.string معرفی شدهاند.
numberFormat(number)
این متد اعداد را قالببندی میکند. بدین ترتیب اعداد به صورت رشتههایی با ممیز جداسازی بخش اعشاری و علامت جداسازی هزارگان فرمتبندی میشوند.
1var _ = require("underscore.string");
2_.numberFormat(1000, 3)
3=> "1,000.000"
4_.numberFormat(123456789.123, 5, '.', ',');
5=> "123,456,789.12300"
levenshtein(string1,string2)
این متد مسافت لونشتاین بین دو رشته را محاسبه میکند. برای کسب اطلاعت بیشتر در این مورد پیشنهاد میکنیم مطلب زیر را مطالعه کنید:
در ادامه مثالی از کاربرد این متد را میبینید:
1var _ = require("underscore.string");
2_.levenshtein('kitten', 'kittah');
3=> 2
chop(string, step)
این متد یک رشته را به بخشهای تعیین شده تقسیم میکند.
1var _ = require("underscore.string");
2_.chop('whitespace', 3);
3=> ['whi','tes','pac','e']
برای کسب اطلاعات بیشتر در مورد کتابخانه Underscore String به این صفحه (+) مراجعه کنید.
کتابخانه Stringz
کارکرد اصلی این کتابخانه آن است که به یونیکد حساس است. اگر کد زیر را اجرا کنید، خروجی برابر با دو خواهد بود:
1"?".length
2// -> 2
دلیل خروجی فوق این است که ()String.length تعداد واحدهای کد موجود در رشته و نه تعداد کاراکترها را بازگشت میدهد. در واقع برخی کاراکترها در محدوده 010000–03FFFF و 040000–10FFFF میتوانند تا 2 بایت (32 بیت) برای هر نقطه کد داشته باشند، اما این موضوع تغییری در پاسخ ایجاد نمیکند. زیرا برخی کاراکترها بیش از 2 بایت هستند و لذا به بیش از یک نقطه کد نیاز دارند. برای کسب اطلاعات بیشتر در مورد مسئله یونیکد جاوا اسکریپت به این صفحه (+) مراجعه کنید.
نصب
برای نصب این کتابخانه از دستور زیر استفاده کنید:
npm install stringz
متدهای مهم
در ادامه برخی متدهای مهم این کتابخانه را مشاهده میکنید:
limit(string, limit, padString, padPosition)
این متد رشته را به عرض مفروض محدود میکند:
1const stringz = require('stringz');
2// Truncate:
3stringz.limit('Life’s like a box of chocolates.', 20);
4// "Life's like a box of"
5
6// Pad:
7stringz.limit('Everybody loves emojis!', 26, '?');
8// "Everybody loves emojis!???"
9stringz.limit('What are you looking at?', 30, '+', 'left');
10// "++++++What are you looking at?"
11
12// Unicode Aware:
13stringz.limit('???', 2);
14// "??"
15stringz.limit('????', 4, '??');
16// "????????"
toArray(string)
این متد رشته را به یک آرایه تبدیل میکند:
1const stringz = require('stringz');
2stringz.toArray('abc');
3// ['a','b','c']
4//Unicode aware
5stringz.toArray('????');
6// ['??', '?', '?']
برای کسب اطلاعات بیشتر در مورد Stringz به ریپوی گیتهاب آن (+) مراجعه کنید.
سخن پایانی
به این ترتیب به پایان این مقاله با موضوع معرفی 5 کتابخانه دستکاری رشته برای جاوا اسکریپت میرسیم. امیدواریم این مطلب مورد توجه شما قرار گرفته باشد.