یک تابع Ruby بنویسید که در یک رشته ورودی همه تاریخهای با فرمت YYYY-MM-DD را پیدا کرده و به صورت آرایهای از رشتهها برگرداند.
4.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:14 0.0
برای حل این مسئله از عبارات منظم (Regexp) استفاده کنید؛ متد String#scan میتواند همهٔ تطابقها را برگرداند. الگوی سادهٔ پیشنهادی /\b\d{4}-\d{2}-\d{2}\b/ است و برای اعتبارسنجی دقیقتر (مثلاً بررسی مقدار ماه و روز) میتوانید require 'date' کرده و با Date.parse روی هر تطابق امتحان کنید و خطاها را rescue نمایید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای یافتن تاریخها با فرمت YYYY-MM-DD، از String#scan با الگوی /\b\d{4}-\d{2}-\d{2}\b/ استفاده کنید تا همهٔ تطابقها به صورت رشته برگردند. برای اعتبارسنجی دقیقتر روی هر تطابق Date.parse را تست کرده و استثناها را rescue کنید تا فقط تاریخهای معتبر در خروجی باشند. توجه کنید که گاهی \b در متنهای یونیکد یا نزد کاراکترهای غیرکلمهای رفتار متفاوتی دارد؛ در این حالت میتوانید از الگوهای دقیقتر مانند استفاده از (?<!\d)(\d{4})-(\d{2})-(\d{2})(?!\d) یا Date.strptime با فرمت '%Y-%m-%d' بهره ببرید. اگر ورودی بزرگ است، الگو را یکبار جمعآوری کرده و سپس با اعتبارسنجی دقیقتر نتیجه را فیلتر کنید.
گزارش