[تحدي - مسابقه] > منتهي < { #VB.NET|C } I KNOW REGEX BUT I DO NOT NEED IT

تم تحميل الصفحة في 1,9221597 ثانية
[تحدي - مسابقه] > منتهي < { #VB.NET|C } I KNOW REGEX BUT I DO NOT NEED IT
الحالة
مغلق و غير مفتوح للمزيد من الردود.

AGENT OF CHAOS

موقوف لمخالفة الشروط
rankrankrankrank
إنضم
8 يونيو 2016
المشاركات
1,500
الإعجابات
1,517
النقاط
113
يمكنك تتعلم الريجكس ما فيها مشكله
المهم الباترن او النمط المكتوب بالاحمر هو يشوفلك النص هل هو مطابق للقيود الى انت كاتبها أولا
يعني مثلا اول شى بالنمط يقول : هل النص يبدا بـ DEV
بس لازم تتعلم ريجكس ! فى كل الاحوال
 

AGENT OF CHAOS

موقوف لمخالفة الشروط
rankrankrankrank
إنضم
8 يونيو 2016
المشاركات
1,500
الإعجابات
1,517
النقاط
113
مشآركة الاخ قسآم :
طبعاً أنا مؤيدي تقنية Regex وتعاملي مع النصوص لا يكون إلا فيها .. خاصة في الحالات المعقدة مثل ما يظهر لدينا هنا .. لأنها ستكون طويلة جداً ومملة وعرضة للأخطاء .. فهذا الكود يعمل عمل الـ Pattern السابقة .. مع العلم أنه من الممكن أن يكون فيه أخطاء لعدم التدقيق كثيراً ولأن الطريقة مملة جداً :th_2mo5pow:

وهذه محاولتي الصغيرة
:15:

كود Visual Basic
    Public Function HandCode(ByVal Input As String) As Boolean
        Try
            Dim Index As Integer = 0

            'First Stage
            If Input.StartsWith("DEV(") Then
                Index += 4
            Else
                GoTo FalseLable
            End If


            'Second Stage
            Dim S2 As String = Input.Substring(Index, GetNumeric(Index, Input, 3).Length)
            If S2.Trim <> "" Then
                If S2.Length < 4 Then
                    Dim valid2 As Boolean = S2.All(Function(c) "123".Contains(c))
                    If valid2 = True Then
                        Index += S2.Length
                    Else
                        GoTo FalseLable
                    End If
                Else
                    GoTo FalseLable
                End If
            End If


            'Third Stage

            Dim S3 As String = Input.Substring(Index, 1)
            If S3.Trim <> "" Then
                Dim valid3 As Boolean = S3.All(Function(c) "!;~".Contains(c))
                If valid3 = True Then
                    Index += 1
                Else
                    GoTo FalseLable
                End If
            End If


            '4th Stage

            Dim S4 As String = Input.Substring(Index, GetNumeric(Index, Input, S2.Length).Length)
            If S4.Trim <> "" Then
                If S4.Length < 4 Then
                    Dim valid4 As Boolean = S4.All(Function(c) "123".Contains(c))
                    If valid4 = True AndAlso S4 = S2 Then
                        Index += S4.Length
                    Else
                        GoTo FalseLable
                    End If
                Else
                    GoTo FalseLable
                End If
            End If



            '5th Stage
            Dim S5 As String = Input.Substring(Index, GetNumeric(Index, Input).Length)

            If S5.Trim.Length >= 4 Then
                Dim valid5 As Boolean = S5.All(Function(c) "0123456789".Contains(c))
                If valid5 = True Then
                    Index += S5.Length
                Else
                    GoTo FalseLable
                End If
            End If

            '6th Stage
            If Input.Substring(Index, 1) = ")" Then
                Index += 1
            Else
                GoTo FalseLable
            End If


            '7th Stage
            If Input.Substring(Index, 2) = "C#" Then
                Index += 2
            Else
                GoTo FalseLable
            End If

            '8th Stage


            If Input.Substring(Index, 5) = "POINT" Then
                Index += 5
            Else
                GoTo FalseLable
            End If


            '9th Stage

            Dim S9 As String = Input.Substring(Index)
            Dim valid9 As Boolean = S9.All(Function(c) "DEVPOINT".Contains(c) = False)
            If S9.Trim = "" OrElse valid9 = False Then
                GoTo FalseLable
            End If

            Return True

        Catch ex As Exception
            GoTo FalseLable

        End Try

FalseLable:
        Return False
    End Function

    Public Function GetNumeric(ByVal Index As Integer, ByVal value As String, Optional ByVal MaxLength As Integer = 0) As String
        Dim output As StringBuilder = New StringBuilder

        Dim MaxU As Integer

        If MaxLength = 0 Then

            MaxU = value.Length - 1
        Else
            MaxU = Index + MaxLength - 1
        End If

        For i = Index To MaxU
            If IsNumeric(value(i)) Then
                output.Append(value(i))
            Else
                Exit For
            End If
        Next
        Return output.ToString()
    End Function
 

AGENT OF CHAOS

موقوف لمخالفة الشروط
rankrankrankrank
إنضم
8 يونيو 2016
المشاركات
1,500
الإعجابات
1,517
النقاط
113
مشآركتي :
كود C#
Public Function GE()

        Try
            Dim x As String = TextBox4.Text
            If x.StartsWith("DEV(") Then
                If IsNumeric(x.Substring(4, (x.IndexOfAny(New Char() {"!", "~", ";"}) - x.IndexOf("(") - 1))) And x.Substring(4, (x.IndexOfAny(New Char() {"!", "~", ";"}) - x.IndexOf("(") - 1)).All(Function(con_123) "0456789".Contains(con_123) = False) Then
                    Dim N_1 = (x.Substring(4, (x.IndexOfAny(New Char() {"!", "~", ";"}) - x.IndexOf("(") - 1)))
                    If x.Substring(4 + ((x.IndexOfAny(New Char() {"!", "~", ";"}) - x.IndexOf("(") - 1)), 1).All(Function(v) "~!;".Contains(v)) Then
                        If (x.Substring(x.IndexOfAny(New Char() {"!", "~", ";"}) + 1, N_1.Length)) = N_1 Then
                            If IsNumeric(x.Substring(x.IndexOfAny(New Char() {"!", "~", ";"}) + 1 + N_1.Length, x.IndexOf(")") - x.IndexOfAny(New Char() {"!", "~", ";"}) - N_1.Length - 1)) Then
                                Dim N_2 = x.Substring(x.IndexOfAny(New Char() {"!", "~", ";"}) + 1 + N_1.Length, x.IndexOf(")") - x.IndexOfAny(New Char() {"!", "~", ";"}) - N_1.Length - 1)
                                If N_2.Length > 3 Then
                                    If (x.Substring(x.IndexOfAny(New Char() {"!", "~", ";"}) + 1 + N_1.Length + N_2.Length, 1)) = ")" Then
                                        If (x.Substring(x.IndexOfAny(New Char() {"!", "~", ";"}) + 1 + N_1.Length + N_2.Length + 1, 2)) = "C#" Then
                                            If (x.Substring(x.IndexOfAny(New Char() {"!", "~", ";"}) + 1 + N_1.Length + N_2.Length + 1 + 2, 5)) = "POINT" Then
                                                If (x.Substring(x.IndexOfAny(New Char() {"!", "~", ";"}) + 1 + N_1.Length + N_2.Length + 1 + 2 + 5, 1)).All(Function(not_con_DEVPOINT) "DEVPOINT".Contains(not_con_DEVPOINT) = False) Then
                                                    Return True
                                                End If
                                            End If
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        Catch FI As Exception
            Return False
        End Try
        Return False
    End Function
 

AGENT OF CHAOS

موقوف لمخالفة الشروط
rankrankrankrank
إنضم
8 يونيو 2016
المشاركات
1,500
الإعجابات
1,517
النقاط
113
بالنسبه للتحدى كآن تابث يعني الإبتعاد عن الفنكشن الكثيره و و الحل من اقصر طريق و بشرط يكون سلس و سهل التعديل و الفهم
طبعا النتآئج : الاخ قسام لديه خطأ و هو كالتآلى :
DEV(112!1120000)C#POINTjV
النتيجه ترجع False و المفروض ترجع True
هدا بالنسبه للأخطاء
بالنسبه للمقآرنه
نآخد الخطوة التآنيه و هى التحقق من الرقم بعد القوس )
الاخ قسآم :
كود C#
'Second Stage
Dim S2 As String = Input.Substring(Index, GetNumeric(Index, Input, 3).Length)
If S2.Trim <> "" Then
If S2.Length < 4 Then
Dim valid2 As Boolean = S2.All(Function(c) "123".Contains(c))
If valid2 = True Then
Index += S2.Length
Else
GoTo FalseLable
End If
Else
GoTo FalseLable
End If

و يحتآج الفنكشن
كود C#
Public Function GetNumeric(ByVal Index As Integer, ByVal value As String, Optional ByVal MaxLength As Integer = 0) As String
Dim output As StringBuilder = New StringBuilder

Dim MaxU As Integer

If MaxLength = 0 Then

MaxU = value.Length - 1
Else
MaxU = Index + MaxLength - 1
End If

For i = Index To MaxU
If IsNumeric(value(i)) Then
output.Append(value(i))
Else
Exit For
End If
Next
Return output.ToString()
End Function

الكود الخاص بي :
كود C#
                If IsNumeric(x.Substring(4, (x.IndexOfAny(New Char() {"!", "~", ";"}) - x.IndexOf("(") - 1))) And x.Substring(4, (x.IndexOfAny(New Char() {"!", "~", ";"}) - x.IndexOf("(") - 1)).All(Function(con_123) "0456789".Contains(con_123) = False) Then


يمكن لأي شخص يقآرن بين الكودين - رح تلاحظ الفروق

--
بالنسبه للفآئز فالأخ لديه غلط و أنا حسب تجربتي ما عندي مما يعني أنني الفآئز :15:
كنت أظن التفآعل رح يكون أكبر - و كان فى بالى التحدي لبعده نسوى رجكس بنفسنآ - شبه كآمل
شكرا للأخ قسآم ما خلانى لوحدي بالتحدي - يعطيه العآفيه
:32:
 
التعديل الأخير:
إنضم
8 سبتمبر 2013
المشاركات
7,788
الإعجابات
11,653
النقاط
168
الإقامة
Live.IQ(JO => JO.AMMAN)
فهم الباترن كان بالنسبة لي صعب
و بكل امانة ما كنت سأكتب أفضل من الفنكشن الي كتبته انت اخي WHO AM I
كان راح يكون قريب من شكل كود الأخ محمد القسّام .. ليس بجودته لكن بشكله

..
 

AGENT OF CHAOS

موقوف لمخالفة الشروط
rankrankrankrank
إنضم
8 يونيو 2016
المشاركات
1,500
الإعجابات
1,517
النقاط
113
فهم الباترن كان بالنسبة لي صعب
و بكل امانة ما كنت سأكتب أفضل من الفنكشن الي كتبته انت اخي WHO AM I
كان راح يكون قريب من شكل كود الأخ محمد القسّام .. ليس بجودته لكن بشكله

..
الشكل المتفرع يعني فنكشن بداخل مجمعة فنكشن اخرى ينفع فى حال كنت تريد تكتب مشروع كـ ريجكش - يعني لست ثابت و محدد مسبقآ - يعني مثلا من تجي تكتب برنامج وظيفة ثابته يضرب 3 * 5 و يطبعلك 15
رح تكتب إطبع 3 * 5
و إن كنت تريد تطبع ناتج ضرب عددين يدخلهم المستخدم رح تجعلها قابله للتعديل
رح تاخد الرقمين مهما كان الرقمين و تضربهم - و انت الحين عارف النتيجه إلى هى ناتج الضرب وهو ناتج الاول فى التانى بس الرقمين نفسهم ما عارفهم
أتمنى الفكره وصلت :32:
 
إنضم
8 سبتمبر 2013
المشاركات
7,788
الإعجابات
11,653
النقاط
168
الإقامة
Live.IQ(JO => JO.AMMAN)
الشكل المتفرع يعني فنكشن بداخل مجمعة فنكشن اخرى ينفع فى حال كنت تريد تكتب مشروع كـ ريجكش - يعني لست ثابت و محدد مسبقآ - يعني مثلا من تجي تكتب برنامج وظيفة ثابته يضرب 3 * 5 و يطبعلك 15
رح تكتب إطبع 3 * 5
و إن كنت تريد تطبع ناتج ضرب عددين يدخلهم المستخدم رح تجعلها قابله للتعديل
رح تاخد الرقمين مهما كان الرقمين و تضربهم - و انت الحين عارف النتيجه إلى هى ناتج الضرب وهو ناتج الاول فى التانى بس الرقمين نفسهم ما عارفهم
أتمنى الفكره وصلت :32:
اعتقد انني فهمتك قليلاً ههه
على كل حال عسى ان يكون لنا حظ في تحدي قادم
(يا ريت يكون قريب فكله تمارين - المواضيع لا تتعفن حتى لو تترك لسنوات في القسم :3 استعجل)
 

AGENT OF CHAOS

موقوف لمخالفة الشروط
rankrankrankrank
إنضم
8 يونيو 2016
المشاركات
1,500
الإعجابات
1,517
النقاط
113
اعتقد انني فهمتك قليلاً ههه
على كل حال عسى ان يكون لنا حظ في تحدي قادم
(يا ريت يكون قريب فكله تمارين - المواضيع لا تتعفن حتى لو تترك لسنوات في القسم :3 استعجل)
أبششر - بعد شفت الموضوع دخل في الكثير من الاعضاء ما اجد إلى مشارك واحد ! هنا فى مشكله فى التعامل مع النصوص
رح بسوي شوي دروس للتعامل مع النصوص بطريقه متقدمه شوي عن دالة الإستبدال و أخواتها
يعني تعامل مع نصوص مستوى 2
أتوقع أقدر أسوى أو موضوع اليوم .
 
إنضم
8 سبتمبر 2013
المشاركات
7,788
الإعجابات
11,653
النقاط
168
الإقامة
Live.IQ(JO => JO.AMMAN)
أبششر - بعد شفت الموضوع دخل في الكثير من الاعضاء ما اجد إلى مشارك واحد ! هنا فى مشكله فى التعامل مع النصوص
رح بسوي شوي دروس للتعامل مع النصوص بطريقه متقدمه شوي عن دالة الإستبدال و أخواتها
يعني تعامل مع نصوص مستوى 2
أتوقع أقدر أسوى أو موضوع اليوم .
يا ريت و الله
شوف يا اخي انا مشكلتي مع المعقدات
التعامل مع النصوص (كتابة الـpatterns تحديداً) شوية صعبة
اغلب شغلي على Regex.split للأمانة ما استخدم Patterns و ما احتاجيت اني اتعلمها
مرة شرحليها صديقي و فهمتها لكن قلة الاستخدام خلاني نسيتها

اعرف انها جداً مهمة لكن لم احتاجها بشيء لذلك اهملتها
شغلي بسيط و يؤدي اشياء بسيطة ما اشتغلت على شي عظيم الى الان
لذلك هذه التحديات تفتح المخ على اشياء متروكة .. صحيح المشاركين 1
لكن الي عرفوا عن الـpatterns كثيرين لعلهم يبحثون مثلما فعلت .. و هنا تتحقق الفائدة

اتمنى شروحات حول كتابة الـpatterns ... وجدت موقع رائع قبل فترة عندما تلصق فيه الـPattern يشرحه لك جزء جزء .. انجليزي
سوف اضيفه للقسم عندما اجده بين ملفاتي
 

AGENT OF CHAOS

موقوف لمخالفة الشروط
rankrankrankrank
إنضم
8 يونيو 2016
المشاركات
1,500
الإعجابات
1,517
النقاط
113
اتمنى شروحات حول كتابة الـpatterns ... وجدت موقع رائع قبل فترة عندما تلصق فيه الـPattern يشرحه لك جزء جزء .. انجليزي
الشروحات للباترن متاوفره بكثره - بس إلى بركز عليه هو شرح الباترن مع تحويله إلى أكواد مكتوبه بواسطة المبرمج - يعني عشان يعرف وش يسوى
تابع السلسه و رح تستفيد ولو قليلا .
 
إنضم
8 سبتمبر 2013
المشاركات
7,788
الإعجابات
11,653
النقاط
168
الإقامة
Live.IQ(JO => JO.AMMAN)
الشروحات للباترن متاوفره بكثره - بس إلى بركز عليه هو شرح الباترن مع تحويله إلى أكواد مكتوبه بواسطة المبرمج - يعني عشان يعرف وش يسوى
تابع السلسه و رح تستفيد ولو قليلا .
اكيد راح استفيد كثير .. اعرف مواطن الضعف في معرفتي .. التعامل مع النصوص يحتاج الى تعلم الكثير عندي
 

AGENT OF CHAOS

موقوف لمخالفة الشروط
rankrankrankrank
إنضم
8 يونيو 2016
المشاركات
1,500
الإعجابات
1,517
النقاط
113

AGENT OF CHAOS

موقوف لمخالفة الشروط
rankrankrankrank
إنضم
8 يونيو 2016
المشاركات
1,500
الإعجابات
1,517
النقاط
113

AGENT OF CHAOS

موقوف لمخالفة الشروط
rankrankrankrank
إنضم
8 يونيو 2016
المشاركات
1,500
الإعجابات
1,517
النقاط
113
@Qassam Sniper
تركت الموضوع لفتره بإنتظار إن كان لك تعليق أو شىء ما ! - شكرا لك على المشآركه
يغلق الموضوع .
 
الحالة
مغلق و غير مفتوح للمزيد من الردود.

الأعضاء النشطين حاليآ الذين يشاهدون هذا الموضوع (1 عضو و 0 ضيف)

خيارات الاستايل

نوع الخط
مودك
اخفاء السايدر بار OFF
توسيط المنتدى OFF
فصل الأقسام OFF
الأقسام الفرعية OFF
عرض المشاركات
حجم الخط
معلومات العضو OFF
إخفاء التوقيع OFF

إرجاع خيارات الإستايل