دسته بندی : زبان برنامه نویسی 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 ? `<span dir="${txtDirection}">${txt}</span>` : "";
    }).join("\n");
};

اگر بخواهم توضیحی کوتاهی در مورد این قطعه کد بدهم بصورت زیر میباشد :

  • ابتدا ما یک عبارت با قاعده نوشتیم که متون فارسی را در جمله تشخیص بدهد اسم این ثابت را PERSIAN_ALPHBA_REGX  در نظر گرفتیم 
  • ثابت دیگری برای تشخیص تگ های html در نظر میگیریم و در داخل متغییر HTML_CONTENT_REGX  تعریف میکنیم 
  • در متغییر fragmentOriginalText  ما متن ورودی را بر اساس کاراکتر \n بخش کرده و تبدیل به ارایه میکنیم . این آرایه حاوی پاراگراف های از اطلاعات متن ما میباشد . 
  • در متغییر stripContent  ما اطلاعات تگ های html درون هر txt (که شامل یک پارگراف ) میباشد را حذف میکنیم
  • در متغییر numberOfPersianLetters تعداد کلمات فارسی را پیدا میکنیم و متغییر lengthText  ما طول رشته مورد نظر (پاراگرف) در صورتی که طول منهای تعداد فارسی شود اندازه کلمات غیر فارسی یافت میشود که در numberOfLettersNotPersian  میریزیم 😎
  • در شرط حروف های فارسی و غیر فارسی بررسی شده و چینش سطر انتخاب میشود.

0| از0رای

مطالب مشابه


0 دیدگاهافزودن