(1399/4/25، 03:55 صبح)محمد 82 نوشته است: یاخدا اینا چیه؟ راه ساده تری نداره ؟
ارایه و ... روبه ذهنم رسید اما اینا متغیر اینستنس یه اسپرایتن و تعداد اسپرایت مشخص نیست و به نظرم در این کار ارایه و دیکشنری کار رو پیچیده تر میکنن و منم که همیشه دنبال ساده ترین راهم
به نظر من ساده ترین راه اینه که از عبارات با قاعده استفاده کنین. قبلاً مباحث پایه و کاربردی عبارت با قاعده رو در
این تاپیک در انجمن به صورت خلاصه بیان کردم. گرچه تاپیکی که نوشتم صد درصد مطالب راجع به عبارات با قاعده رو پوشش نمیده اما بخش عمده ای از دستورات پرکاربرد رو ذکر کردم. اگر فقط بدونین که عبارات با قاعده چی هستن مطمئناً به این نتیجه میرسین که ساده ترین راه همینه.
برای اینکه بیشتر متوجه ماجرا بشین اجازه بدین یک مقدار ساختار های شرطی که تعریف کردم رو بازتر کنم البته قبلش نیم نگاهی به تاپیکی که مربوط به عبارات با قاعده است داشته باشین تا بفهمین داستان از چه قراره دقیقاً.
در کانستراکت ما میتونیم شروط رو برای اکسپرشن ها به شکل زیر لحاظ کنیم:
کد:
در غیر اینصورت : اتفاقی که در صورت صحیح بودن شرط بیفته ? شرط
حالا چنین شرطی تعریف کردیم:
کد:
RegexMatchCount(RegexMatchAt(V, "(^|\D)Y($|\D)", "g", 0),"[-]","g") = 2 ? replace(V,RegexMatchAt(V, "(^|\D)Y($|\D)", "g", 0),"-") : replace(V,RegexMatchAt(V, "(^|\D)Y($|\D)", "g", 0),"")
خُب حالا فرض کنیم یک سری (دنباله) به شکل زیر داریم:
در کل میتونیم برای استخراج هر یک از اعضا سه حالت داشته باشیم. یعنی عدد موردنظر شما یا میتونه بین دو خط تیره قرار گرفته باشه (-Y-) یا قبلش یک خط تیره قرار گرفته باشه (Y-) و یا بعدش یک خط تیره قرار گرفته باشه (-Y). حالا چه زمانی هر یک از حالاتی که گفتیم رُخ میده؟
- * زمانی بعد از عدد موردنظر یک خط تیره داریم که عدد موردنظر دقیقاً اولین عضو سری (دنباله) ما باشه. در مثالی که بالاتر زدم عدد صفر میتونه تنها کاندید این حالت باشه.
- * زمانی عدد موردنظر ما بین دو خط تیره قرار میگیره که جزء اعضای وسطی سری (دنباله) باشه. مثلاً (-Y-)
- * زمانی عدد موردنظر ما قبلش یک خط تیره واقع میشه که در واقع آخرین عضو از سری (دنباله) باشه. مثلاً (Y-)
خُب حالا برگردیم به شرطی که تعریف کردیم؛
در اولین شرطی که بیان کردیم گفتیم که در صورتی که عدد جدا شده به کمک عبارت با قاعده ای که در کاندیشن
Test Regex تعریف کردیم دارای دوتا خط تیره بود معنیش اینه که عدد موردنظر ما از اعضای وسطی سری (دنباله) هست و به جای اون (-Y-) باید یک خط تیره قرار بدیم (جایگزین کنیم).
در قسمت در غیر اینصورت گفتیم که مقدار (Y-) و یا (-Y) رو با یک فضای خالی (دابل کوتیشن) جایگزین کن. اما چرا؟ چون از نظر منطقی وقتی عدد موردنظر ما در شرط اول صدق نکنه (جزء اعضای وسطی سری نباشه) پس طبیعتاً یا اولین عضو و یا آخرین عضو سری ما هست.
اگر نیم نگاهی به بحث عبارات با قاعده داشته باشین مطمئناً کاملاً متوجه اتفاقی که میفته میشین.
موفق باشین.