منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كود لحساب عدد تكرار الاحرف
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
سلام عليكم
محتاجه كود بلغه vb.net 
لدي textbox1 يحتوي على aaabcc
اريد اني يخرج في textbox2 على شكل 3ab2c
بمعنى يحسب عدد  الحروف  الحروف المتكرره ويطبع عدد التكرار لكل حرف
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"
(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"

جربته للكود مانفذ ممكن كود ابسط من هذا
جربي هذا الكود ويحتوي على شرح
كود :
   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)
أعتذر يا إبنتي فانا دوما أنسي ان بعض الناس ليس لديهم نسخة حديثة من الدوت نت
عموما جميع الأكواد السابقة تعمل جيدا
و لكن في الكود التالي ستجدين دالة سوف تعمل علي جميع النسخ من الدوت نت

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"