
نوشته شده توسط
eb_1345
با سلام و وقت بخیر
در تابع فوق نمیشه از طریق کد زیر تکراری بودن 10 رقم کد ملی رو چک کرد؟
If Len(SSID) - Len(Replace(SSID, Left(SSID, 1), "")) = 10 Then
IsValidSSID = False
Exit Function
End If
سلام دوباره
قطعا میشه،
این دست شماست که چه روشی پیاده کنین.
گاهی در حالتهایی خاص (مثل اینجا که تکراری بودن شامل همه استرینگ هست) میشه کدهایی شبیه این نوشت،
یا حتی کوتاهترش کرد:
If Replace(SSID, Left(SSID, 1), "")="" Then
IsValidSSID = False
Exit Function
End If
شما هر کاری رو که با regex انجام میدین،
با همین توابع string و split و ... هم میشه.
گاهی حتی ساده تر هم هست (پست 44)، و خب گاهی ممکنه خیلی سخت تر باشه - ولی میشه.
به طور مطلق نمبتونین بگین کدوم برتری داره: در سناریو هست که با توجه به شرایط مشخص میشه.
در همین مثال اگر مسئله به این صورت تغییر کنه:
آیا یک استرینگ شامل حروف تکراری (2 یا بیشتر) پشت سر هم هست؟
مثل abcdddefgghhhhxyyyxx که باید اینها رو پیدا کنه: abcdddefgghhhhxyyyxx
دیگه کدی که فقط با توابع استرینگ پیاده شده باشه، شاید نوشتنش به سادگی این مثال نباشه (همیشه شدنی هست)
ولی همین روش back-refrence با یک پترن ساده پاسخگو هست:
(.)\1+
دیگه انتخابش با شماست که یک Trade-off بین زمان رسیدن به پاسخ، سادگی نگهداری و دیباگ، خوانایی، پرفورمنس و ... انجام بدین.