تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] كيف افحص نص هل يحتوي على حروف ورموز
#1
السلام عليكم ورحمة الله وبركاته
منذ عدة ايام بدات بدراسه فيجوال بيسك
خطر على بالي اليوم لو قررت وضع 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 حتى اعرف هل هو رقم او لا
الرد }}}}
تم الشكر بواسطة:
#2
(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
الرد }}}}
تم الشكر بواسطة:
#3
جزاك الله خير
لكن الكود لايعمل بالشكل المطلوب وقمت بتجريب هذه الداله 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
تحيتي للجميع
الرد }}}}
تم الشكر بواسطة:
#4
http://www.codeproject.com/KB/miscctrl/P...play=Print
http://www.vbforums.com/showthread.php?6...d-Strength
https://www.google.com/search?q=Password...jfnzvKpVdo
الرد }}}}
تم الشكر بواسطة: foxweb
#5
PHP كود :
Dim regexItem = New Regex("^[a-zA-Z0-9 ]*$")

If 
regexItem.IsMatch() Then
    

End 
If 
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] تفقيط الأرقام وتحويلها إلى حروف semsemalex 8 7,796 31-07-17, 05:51 PM
آخر رد: محمود بكرى
  مشكلة في تحميل فورم يحتوي على كريستال ريبورت تناسيم 1 138 12-06-17, 02:28 PM
آخر رد: Amir_alzubidy
  نوع ال DbType للمتغير الرقم الذي يحتوي على كسور عشرية تناسيم 1 106 30-05-17, 04:04 PM
آخر رد: alma2
  ما نوع متغير الرقم الذي يحتوي على كسورعشرية ؟ تناسيم 1 146 27-04-17, 01:27 PM
آخر رد: rmlq
  رسالة عند فتح فورم يحتوي على تقرير تناسيم 0 122 20-04-17, 11:29 AM
آخر رد: تناسيم
  تحويل الارقام الي حروف محمد بوقزاحة 6 611 22-01-17, 05:01 PM
آخر رد: tryold
  [VB.NET] التعامل مع الباركود حروف وأرقام ..؟ adel27 5 638 21-11-16, 10:45 PM
آخر رد: محمود بكرى
  [سؤال] طلب كود لتوليد قائمة كلمات سر عشواية (حروف فقط) فارس جراح 3 444 13-11-16, 10:40 PM
آخر رد: فارس جراح
  فيجوال 2015 لا يحتوي على ريبورت ؟ samira20 3 303 02-11-16, 10:14 PM
آخر رد: أبو عمر
  دالة لجعل مربع النص لا يقبل حروف atefkhalf2004 6 547 17-09-16, 12:38 AM
آخر رد: أبو عمر

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم