منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] كيف افحص نص هل يحتوي على حروف ورموز - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [سؤال] كيف افحص نص هل يحتوي على حروف ورموز (/showthread.php?tid=15269)



كيف افحص نص هل يحتوي على حروف ورموز - foxweb - 30-03-16

السلام عليكم ورحمة الله وبركاته
منذ عدة ايام بدات بدراسه فيجوال بيسك
خطر على بالي اليوم لو قررت وضع textbox من اجل كلمة المرور واذا قام المستخدم بوضع فقط احرف تظهر له رساله انه يجب وضع خليط بين حروف وارقام
واذا وضع فقط ارقام تظهر له نفس رساله
استطعت التوصل الى جعله يدمج احرف وارقام مع بعض ولكن لم استطيع جعله يدمج معهم ايضا رموز مثل !@#$ الخ
في طريقه ولكن طويله افحص كل عنصر بهذه الرموز وهنا تصبح الشروط كثيره لانه بكون مضطر مقارنه كل char هل يسوي مثلا @ او يساوي # او ! ... الخ
هذه تجربتي


كود :
Public Class Form1

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       If (checkLetter(txtValue.Text)) Then
           MsgBox("Ok")
       End If

       

   End Sub
   Private Function checkLetter(z As String) As Boolean
       Dim x As Boolean = False
       Dim y As Boolean = False

       For index = 0 To z.Length - 1
           If (Char.IsNumber(z(index))) Then
               x = True
           ElseIf (Char.IsLetter(z(index))) Then
               y = True
           End If
         
       Next ' end for
       If (x And y) Then
           Return True
       End If

       Return False
   End Function


End Class


سؤالي هنا ممكن عمل نفس الفكرة بطريقه اسهل بالمعالجه ؟ بدون استخدام regex
مثل اذا في داله تتاكد انه نص معين يحتوي على احرف وارقام ورموز خاصه ؟ 
ايضا ماهي الداله التي نفحص في char معين لكي نعرف هل هو رمز خاص او لا مثلا !@#$ّ الخ من رموز
مثل هنا استخدمت isNumber حتى اعرف هل هو رقم او لا


RE: كيف افحص نص هل يحتوي على حروف ورموز - mawad - 31-03-16

(30-03-16, 03:27 PM)foxweb كتب :
كود :
Public Class Form1

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        If (checkLetter(txtValue.Text)) Then
            MsgBox("Ok")
        End If

        If (checkNoLetterOrDigit(txtValue.Text)) Then
            MsgBox("Ok")
        End If
    End Sub

    Private Function checkLetter(ByVal z As String) As Boolean

        For index = 0 To z.Length - 1
            If (Char.IsLetterOrDigit(z(index))) Then
                Return True
            End If

        Next ' end for

        Return False
    End Function

    Private Function checkNoLetterOrDigit(ByVal z As String) As Boolean

        For index = 0 To z.Length - 1
            If (Not Char.IsLetterOrDigit(z(index))) Then
                Return True
            End If

        Next ' end for

        Return False
    End Function

End Class



RE: كيف افحص نص هل يحتوي على حروف ورموز - foxweb - 31-03-16

جزاك الله خير
لكن الكود لايعمل بالشكل المطلوب وقمت بتجريب هذه الداله IsLetterOrDigit  قبل كتابه الموضوع
لو انتبهت للداله فيها or يعني او رقم او حرف فهي ترجع لك true اذا المستخدم ادخل فقط حروف راح تبقى النتيجه true
انا هنا اريده يدخل خليط من الاحرف والارقام و الرموز لانها كلمه مرور وكل ماكانت الكلمه معقده كان صعب التخمين عليها
ايضا الكود قمت ارفاقه اخي الحبيب فيه مشكلة يتوجب استخدام and
لانه لو بتجرب الكود وتضع هكذا @@@@ بداخل textbox راح يقبله منك ويطبع ok وهذا يعتبر خطا
المفروض يصبح الشرط هكذا

كود :
If (checkLetter(txtValue.Text) And checkNoLetterOrDigit(txtValue.Text)) Then
           MsgBox("Ok")
       End If


استفدت من جمله نفي الشرط في هذا الكود
كود :
Not Char.IsLetterOrDigit(z(index))

للتاكد من ادخال رموز  ... بشكرك كثيرا الان الكود يعمل معي 100 % Smile

كود :
Public Class Form1

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       If (checkLetter(txtValue.Text)) Then
           MsgBox("Ok")
       End If

       

   End Sub
   Private Function checkLetter(z As String) As Boolean
       Dim x As Boolean = False
       Dim y As Boolean = False
       Dim p As Boolean = False

       For index = 0 To z.Length - 1
           If (Char.IsNumber(z(index))) Then
               x = True
           ElseIf (Char.IsLetter(z(index))) Then
               y = True
           ElseIf (Not Char.IsLetterOrDigit(z(index))) Then
               p = True
           End If
         
       Next ' end for
       If (x And y And p) Then
           Return True
       End If

       Return False
   End Function


End Class


لكن مازال الكود كما هو يمر بالعديد من العمليات
فهل ممكن تحسين الكود اكثر من ناحيه الاداء Sleepy
تحيتي للجميع


RE: كيف افحص نص هل يحتوي على حروف ورموز - mawad - 31-03-16

http://www.codeproject.com/KB/miscctrl/PasswordStrengthControl.aspx?display=Print
http://www.vbforums.com/showthread.php?676278-Password-Strength
https://www.google.com/search?q=Password+Strength++vb.net&oq=Password+Strength++vb.net&gs_l=serp.3..0i7i30l3j0i7i5i30j0i30j0i8i30.194497.196095.0.200632.2.2.0.0.0.0.316.603.2-1j1.2.0....0...1c.1.64.serp..0.2.602.MjfnzvKpVdo


RE: كيف افحص نص هل يحتوي على حروف ورموز - HASAN6.0 - 01-04-16

PHP كود :
Dim regexItem = New Regex("^[a-zA-Z0-9 ]*$")

If 
regexItem.IsMatch() Then
    

End 
If