تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كود لحساب عدد تكرار الاحرف
#1
سلام عليكم
محتاجه كود بلغه vb.net 
لدي textbox1 يحتوي على aaabcc
اريد اني يخرج في textbox2 على شكل 3ab2c
بمعنى يحسب عدد  الحروف  الحروف المتكرره ويطبع عدد التكرار لكل حرف
الرد }}}}
تم الشكر بواسطة:
#2
PHP كود :
       Dim currentString As String "aaaabbccc"

 
       Dim dic As Dictionary(Of CharInteger) = currentString.GroupBy(Function(cc).OrderBy(Function(cc.Key).ToDictionary(Function(gg.Key, Function(gg.Count())
 
       Dim result As String ""
 
       For Each kvp In dic
            result 
+= String.Format("{0}{1}"kvp.Valuekvp.Key)
 
       Next 
lلأفضل تحويل الكود أعلاه الي دالة بهذا الشكل و تمرر لها String المراد حساب تكرار الحروف له

PHP كود :
 Private Function CountChars(currentString As String) As String
        Dim result 
As String ""
 
       Dim dic As Dictionary(Of CharInteger) = currentString.GroupBy(Function(cc).OrderBy(Function(cc.Key).ToDictionary(Function(gg.Key, Function(gg.Count())
 
       For Each kvp As KeyValuePair(Of CharIntegerIn dic
            result 
+= String.Format("{0}{1}"kvp.Valuekvp.Key)
 
       Next
        Return result
    End 
Function 
الكود التالي يوضح كيفية استخدام الدالة

PHP كود :
Dim counted As String CountChars("aaaaabbbbbbbbbbb"
الرد }}}}
تم الشكر بواسطة:
#3
(07-11-16, 08:08 PM)silverlight كتب :
PHP كود :
       Dim currentString As String "aaaabbccc"

 
       Dim dic As Dictionary(Of CharInteger) = currentString.GroupBy(Function(cc).OrderBy(Function(cc.Key).ToDictionary(Function(gg.Key, Function(gg.Count())
 
       Dim result As String ""
 
       For Each kvp In dic
            result 
+= String.Format("{0}{1}"kvp.Valuekvp.Key)
 
       Next 
lلأفضل تحويل الكود أعلاه الي دالة بهذا الشكل و تمرر لها String المراد حساب تكرار الحروف له

PHP كود :
 Private Function CountChars(currentString As String) As String
        Dim result 
As String ""
 
       Dim dic As Dictionary(Of CharInteger) = currentString.GroupBy(Function(cc).OrderBy(Function(cc.Key).ToDictionary(Function(gg.Key, Function(gg.Count())
 
       For Each kvp As KeyValuePair(Of CharIntegerIn dic
            result 
+= String.Format("{0}{1}"kvp.Valuekvp.Key)
 
       Next
        Return result
    End 
Function 
الكود التالي يوضح كيفية استخدام الدالة

PHP كود :
Dim counted As String CountChars("aaaaabbbbbbbbbbb"

جربته للكود مانفذ ممكن كود ابسط من هذا
الرد }}}}
تم الشكر بواسطة:
#4
جربي هذا الكود ويحتوي على شرح
كود :
   Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

       ' الاحتفاظ بالنص الأصلي
       Dim txt As String = Me.TextBox1.Text

       ' تحويل النص إلى مصفوفة أحرف مع حذف المكرر
       Dim charArray As Char() = txt.ToCharArray.Distinct.ToArray

       ' لعمل النص الناتج
       Dim res As String = ""

       ' المرور على أحرف المصفوفة
       For Each c As Char In charArray

           ' معرفة تكرار الحرف في النص الأصلي
           Dim cnt As Integer = txt.Count(Function(x As Char) x.Equals(c))

           ' إضافة إلى النص الناتج
           res &= cnt & c

       Next

       ' عرض النص الناتج
       Me.TextBox2.Text = res

   End Sub

ToCharArray تحول النص إلى مصفوفة أحرف استعدادا لتطبيق Distinct
Distinct تتجاهل التكرار (وDistinct هي من Linq)
ToArray تحويل ناتج Distinct الى مصفوفة مرة أخرى
Count تعداد وهي تقوم بالعد
Function ضرورية لعمل Count (وCount هي من Linq)
Equals معناها "=" (وEquals هي من Linq) ويمكن بدلا من Equals استخدام الطريقة التقليدية مثل
كود :
x = c
بدلا من
x.Equals(c)
الرد }}}}
تم الشكر بواسطة:
#5
أعتذر يا إبنتي فانا دوما أنسي ان بعض الناس ليس لديهم نسخة حديثة من الدوت نت
عموما جميع الأكواد السابقة تعمل جيدا
و لكن في الكود التالي ستجدين دالة سوف تعمل علي جميع النسخ من الدوت نت

PHP كود :
  Private Function CountRepeatedChars(As String) As String

        Dim result 
As String ""

 
       Dim values As ArrayList = New ArrayList()
 
       For i 0 To s.Length 1
            Dim current 
As String s(i)
 
           If Not values.Contains(currentThen
                values
.Add(current)
 
           End If
 
       Next

        Dim keys 
As ArrayList = New ArrayList()
 
       For Each c As Char In values
            Dim k 
As Integer 0
            For Each ch 
As Char In s
                If c 
ch Then
                    k 
+= 1
                End 
If
 
           Next
            keys
.Add(k)
 
       Next

        For j 
As Integer 0 To keys.Count 1
            result 
+= String.Format("{0}{1}"keys(j), values(j))
 
       Next

        Return result
    End 
Function
End Class 

طريقة استخدام الدالة

PHP كود :
  Dim repeatedString As String CountRepeatedChars("aaaabbbbbbcccccc"
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] تكرار الضغط في مكان ما في الشاشه Test 8 135 06-11-16, 07:09 PM
آخر رد: silverlight
  [سؤال] ماهو الكود لمنع تكرار الاسم المتشابه في العمود هاوي1995 8 328 07-10-16, 03:51 PM
آخر رد: tifagreet
  [سؤال] يف اعمل حلقة تكرار للضغط على هذا الزر ابو روضة 12 381 22-08-16, 09:09 AM
آخر رد: أبو عمر
  [سؤال] تكرار الصوت فى الليست بوكس ابو روضة 2 140 13-08-16, 09:28 AM
آخر رد: سعود
  تكرار الصفوف في الكريستل ريبورت makky 0 97 20-07-16, 02:43 AM
آخر رد: makky
  [VB.NET] صنع قائمة "احتمالات" من الاحرف والارقام و الرموز التى يدخلها المستخدم ali ahmed 1997 3 159 06-07-16, 07:45 AM
آخر رد: ali ahmed 1997
  [VB.NET] احتاج كود تكرار ListBox طالبة متوهقه 4 336 08-05-16, 12:31 AM
آخر رد: طالبة متوهقه
  [VB.NET] كيف استطيع تكرار الجدول في جميع الصفحات falbarqi 0 133 21-04-16, 02:32 AM
آخر رد: falbarqi
  [سؤال] مشكلة فى البحث بين جدولين يتم تكرار البيانات عند استدعائها احمد عبد الحكيم 14 783 31-01-16, 10:10 PM
آخر رد: khodor1985
  تكرار عملية معينة ارجوكم فراس صلاح 3 340 12-01-16, 03:50 AM
آخر رد: Adrees

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


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