دسته بندی :
زبان برنامه نویسی JAVASCRIPT
متد خودکار تشخیص چینش متن در جاوا اسکریپت
String.prototype.alignment = function () {
const PERSIAN_ALPHBA_REGX = /[\u0600-\u06FF]/g;
const HTML_CONTENT_REGX = /<[^>]*>?/gm;
var mainText = this.valueOf(),
fragmentOriginalText = mainText.split("\n");
return fragmentOriginalText.map(function (txt) {
let stripContent = txt.replace(HTML_CONTENT_REGX, ''),
numberOfPersianLetters = stripContent.match(PERSIAN_ALPHBA_REGX)?.length || 0,
lengthText = txt?.length || 0,
numberOfLettersNotPersian = lengthText - numberOfPersianLetters;
switch (true) {
case numberOfPersianLetters > numberOfLettersNotPersian:
txtDirection = "rtl";
break;
case numberOfPersianLetters < numberOfLettersNotPersian:
txtDirection = "ltr";
break;
default:
txtDirection = "auto";
}
return lengthText ? `${txtDirection}">${txt}` : "";
}).join("\n");
};
اگر بخواهم توضیحی کوتاهی در مورد این قطعه کد بدهم بصورت زیر میباشد :
- ابتدا ما یک عبارت با قاعده نوشتیم که متون فارسی را در جمله تشخیص بدهد اسم این ثابت را PERSIAN_ALPHBA_REGX در نظر گرفتیم
- ثابت دیگری برای تشخیص تگ های html در نظر میگیریم و در داخل متغییر HTML_CONTENT_REGX تعریف میکنیم
- در متغییر fragmentOriginalText ما متن ورودی را بر اساس کاراکتر \n بخش کرده و تبدیل به ارایه میکنیم . این آرایه حاوی پاراگراف های از اطلاعات متن ما میباشد .
- در متغییر stripContent ما اطلاعات تگ های html درون هر txt (که شامل یک پارگراف ) میباشد را حذف میکنیم
- در متغییر numberOfPersianLetters تعداد کلمات فارسی را پیدا میکنیم و متغییر lengthText ما طول رشته مورد نظر (پاراگرف) در صورتی که طول منهای تعداد فارسی شود اندازه کلمات غیر فارسی یافت میشود که در numberOfLettersNotPersian میریزیم 😎
- در شرط حروف های فارسی و غیر فارسی بررسی شده و چینش سطر انتخاب میشود.