جستجو در بخش : سوال جواب منابع اسلامی لغت نامه ها قوانین و مصوبات نقل قل ها
×

فرم ورود

ورود با گوگل ورود با گوگل ورود با تلگرام ورود با تلگرام
رمز عبور را فراموش کرده ام عضو نیستم، می خواهم عضو شوم
×

×

آدرس بخش انتخاب شده


جهت کپی کردن میتوانید از دکمه های Ctrl + C استفاده کنید
رویداد ها - امتیازات
در حال بارگذاری
×

رویداد ها - امتیازات

برای بررسی عملکرد فعالیت و امتیازات خود باید در وب سایت وارد باشید. در صورت عضویت از بخش بالای صفحه وارد شوید، در غیر این صورت از دکمه پایین، مستقیم به صفحه ثبت نام وارد شوید.

×
×
×

دلیل درخواست بستن پست

کلیه پست هایی که جنبه تبلیغاتی داشته، محتوای اسپم و بی مفهوم در این دسته قرار میگیرند. همچنین پست هایی که به منظور گرفتن بک لینک درج می شوند شامل این مورد هستند.
حاوی مفاهیم غیر اخلاقی، سیاسی و یا توهین آمیز. کلیه پست هایی که از نظر محتوایی نیاز به بررسی و یا حذف شدن دارند در این دسته قرار می گیرند.
محتوایی با عدم جزئیات کافی و مورد نیاز. کلیه پست هایی که منظور نویسنده به وضوح مشخص نیست و نیازمند توضیحات و جزئیات بیشتر می باشند در این دسته قرار می گیرند.
محتوایی بی ربط با موضوعیت سرفصل کلی. کلیه پست هایی که از منظر مفهوم و مضمون ارتباطی با عنوان اصلی سوال ندارند در این دسته قرار می گیرند.
محتوایی دلخواه و بر پایه سلیقه. کلیه پست هایی که یک پاسخ مشخص ندارند و متوانند چندین پاسخ متفاوت و صحیح داشته باشند که کاملا مبتنی بر نظر شخصی افراد هستند در این دسته قرار می گیرند.
محتوایی در حوزه خیلی وسیع. کلیه پست هایی که از نظر محتوایی در یک حوزه ی وسیعی قرار دارند و مشخصا به یک موضوع خاصی اشاره ندارند که پاسخدهی به آن ها مستلزم تشریح مفاهیمی کلی می باشند در این دسته قرار می گیرند.
قبلا در لام تا کام مطرح شده. پست هایی که دقیقا با همین محتوا و مضمون قبلا در وب سایت لام تا کام درج شده اند، با ذکر آدرس منبع تکراری با پست حال حاضر شامل این دسته هستند. تکراری است با:
به سایر دلایل، نیازمند به بررسی توسط مدیر. به هر دلیل غیری که پست را نیازمند بررسی توسط مدیر کرده، با ذکر دلیل، در این دسته قرار میگیرد.
ارسال رای بستن

چگونه می توانم آخرین عدد را در یک متن انتخاب کنم؟


1
0
1312

اجازه بدید با یک مثال شروع کنم. این رو ببینید لطفا:

var str = "this is test
           1. this is test
           2. this is test
              3. this is test
           this is test
           1. this test
                   2. this is test";

خب چیزی که نیاز دارم از متن بالا انتخاب کنم (یا به زبان عبارات با قاعده اگه بخوام بگم، چیزی که نیاز دارم مچ کنم) عدد 2 هست. چون که آخرین عدد موجود در متن است و بعد از اون عددی وجود نداره.

حالا این رو هم در ببینید:

var str = "this is test
           1. this is test
           2. this is test
              3. this is test
           this is test
           1. this test
                   2. this is test
           this is test";

در اینجا هم باز میخوام که عدد 2 رو انتخاب کنم. چرا که بعد از اون عدد دیگه ای نیست. ولی نکته ای که وجود داره، توی مثال آخر است که میخوام null برگرده، یعنی هیچ چیز مچ نشه از توی این متن:

var str = "this is test
           1. this is test
           2. this is test
              3. this is test
           this is test
           1. this test
                   2. this is test

           this is test";

خب همانطور که گفتم نباید هیچ چیز توی متن بالا انتخاب بشه. شاید فکر کنید با چه منطقی؟ خب ببینید من نیاز دارم که بگم «آخرین عددی که بعدش 2 اینتر نخورده».

یعنی چیزی که احتیاج دارم، اینه که یک لیست بسازم با جاوا اسکریپت که بتونه توی یک لیست عدد بعدی رو یکی اضافه کنه و به صورت هوشمند برای کاربر نمایش بده. قطعا مشابهش رو توی ورد و اینجور ویرایش گرهای حرفه ای و مدرن دیدید.

نکته: علاوه بر این که اون عدد نباید قبل از 2 اینتر پیوسته باشه، علاوه بر اون، اون عدد باید اول خط هم باشه، ببینید همونطور که گفتم تمام هدفم اینه که یک شمانده بسازم برای یک لیستی که توسط برنامه من عدد بعدیش مشخص میشه. که این وقتی قابل پیاده سازی میشه که بتونم عدد آخری رو که توی یک لیست وجود داره مچ کنم و یکی بیشترش کنم که عدد بعدی برای ادامه اون لیست در بیاد.

کسی میتونه راهنماییم کنه یک دنیا تشکر

علمی برنامه-نویسی جاوا-اسکریپت عبارات-باقاعده
سوال شده در ساناز رضایی
1366 امتیاز


به نظر میاد چیزی که شما نیاز دارید markdown هست ــ S Kill در 5 سال قبل

@S.Kill ببخشید میشه بگید markdown چیه؟ ــ ساناز رضایی در 5 سال قبل

سینتکسی استاندارد برای نوشتن متن که به وسیله پارسر به html تبدیل میشه هم سینتکس استاندارد هست هم پارسرهای خیلی زیادی براش نوشته شده. ادیتوری که توی لام تا کام استفاده شده هم از این سینتکس استفاده میکنه یک نمونه از ادیتور مارکدان رو میتونید اینجا ببینید. ــ S Kill در 5 سال قبل

@S.Kill واااای چه جالبه من داشتم همینو خودم میساختم واقعیتش نمیدونستم اسمش markdown است. مرسی ولی جواب سوال منو نمیدونید شما؟؟ ــ ساناز رضایی در 5 سال قبل

500 کاراکتر باقی مانده

2 جواب

6

از اونجایی که برچسب «عبارات با قاعده» (regex) رو عبارت برجسته رو ضمیمه سوالت کردی، این پترن کاری رو که می خوای با همون ریجکس برات انجام میده: (در زبان جاوا اسکریپت)

/^[\s\S]*(?:^|\r?\n)\s+(\d+)(?![\s\S]*(\r?\n){2})/

نمونه عملی


چیزی که توی سوالت بهش اشاره ای نکردی و من فکر می کنم که در راستای هدفی که داری مهمه، اینه که نسبت به <نقطه> (یا همون . dot) بعد از <آخرین عدد> هم حساس باشی. که الگوش (یا همون پترنش) میشه این:

/^[\s\S]*(?:^|\r?\n)\s+(\d+)\.(?![\s\S]*(\r?\n){2})/

تشریح و توضیحات مورد نیاز برای پترن ریجکس مطروحه:

/                           # دلیمیتر یا همون جداکننده که باید ابتدا و انتهای الگو نوشته بشه
^[\s\S]*                    # از ابتدا تا هر جایی ادامه بده که
(?:^|\r?\n)                 # اگه اولین خط نیست که با یک خط جدید ادامه پیدا کرده
\s*                         # با فاصله (اپیس) ادامه پیدا کرده
(\d+)                       # یک کپچرینگ گروپ برای گرفتن عدد مورد نظر
(?!                         # شروع negative look-ahead
    [\s\S]*(\r?\n){2}       # هر چی که با 2 خط جدید و پیوسته ادامه پیدا کرده
)                           # انتهای negative look-ahead
جواب داده شده در سجاد شفی زاده <m>★</m>
11.1k امتیاز

1
عاااالی بود دقیقا همین الگو رو میخواستم مرسی از شما ــ ساناز رضایی در 5 سال قبل

500 کاراکتر باقی مانده


4

میتونید از این تابع استفاده کنید

const getLastList = str => str
  .split('\n')
  .map(str => str.replace(/^\s*/, ''))
  .filter(str => /(^\d+.|^$)/.test(str))
  .reduce((acc, curr) => (acc = /^(\d)+./.exec(curr), acc && acc[1]), null)

نمونه آنلاین


پ.ن:‌ البته چیزی که شما نیاز دارید یک lexer و parse هست و این روش فقط راه حلی برای سوالتون می باشد لطفا توی محصول نهایی استفاده نشود.

جواب داده شده در S Kill
558 امتیاز

1
خيلي روش خوبي احسنت بر شما ــ سروش قادری نسب در 5 سال قبل

مرسی روشتون عالی بود و اینکه نمونه آنلاین هم گذاشتید توی جوابتون خیلی باعث شد بهتر بفممش مرسی ــ ساناز رضایی در 5 سال قبل

500 کاراکتر باقی مانده


جواب شما
     
.....
×

×

جعبه لام تا کام


وب سایت لام تا کام جهت نمایش استاندارد و کاربردی در تمامی نمایشگر ها بهینه شده است.

تبلیغات توضیحی


داپ اَپ اولین پلتفرم کش‌بک در ایران
اگه میخوای از خریدهایی که میکنی، پاداش نقدی دریافت کنی داپ اَپ رو نصب کن.

تبلیغات تصویری