تمت الإجابة مساعد فى بحث text

تم تحميل الصفحة في 1,3851176 ثانية
مساعد فى بحث text
الحالة
مغلق و غير مفتوح للمزيد من الردود.

Netpro

Beginner Developer
rank
إنضم
11 سبتمبر 2017
المشاركات
16
الإعجابات
2
النقاط
3
العمر
32
السلام عليكم لو سمحت اريد البحث عن قيمه
search = "54 49 57 52 49"
اريد ابحث عن القيمه فى هذا النصوص واذا وجد القيمه يجمعلى الادريس فى ليست بوكس
وبعد ذالك
يعمل
replace = "EF 44 55 F3 FD"
اتمنى الاخوه المحترفين تساعد
A860000 : 53
A860001 : 48
A860002 : 48
A860003 : 48
A860004 : 50
A860005 : 54
A860006 : 49
A860007 : 57
A860008 : 52
A860009 : 49
A86000A : 49
A86000B : 55
A86000C : 49
A86000D : 52
A86000E : 50
A86000F : 57
A860010 : 55
A860011 : 51
A860012 : 49
A860013 : 49
 
إنضم
8 سبتمبر 2013
المشاركات
7,658
الإعجابات
11,469
النقاط
168
الإقامة
Live.IQ(JO => JO.AMMAN)
هذه ابسط فكرة اجت على بالي .. البقية حلقات و دوخة راس و مالي خلق حالياً
C#:
https://rextester.com/SOYX97943
بالنسبة لموضوعك مخالف .. طلب سورسات ممنوع اصلاً و انت طالب method كاملة
لكن الفكرة تحرك خلايا المخ شوية و ما اذكر اني عملت مثلها قبلاً لذلك شاركت السورس بوضوح
بالتوفيق اخي ♥
 
إنضم
18 أغسطس 2010
المشاركات
88
الإعجابات
67
النقاط
18
وعليكم السلام




mayby assmbler !, C# - rextester
هذا الكود بلغة السي شارب

يمكنك استخدام اي موقع لتحويل السي شارب الي vb.net

اذا واجهتك اي مشكله اثناء التحويل او في فهم الكود تفضل اسئل

واخيرا الدوت نت هذا اعتبره مكتبه يوجد اكثر من لغه داخل المكتبه
vb.net
c#
f#
وهكذا
اعتقد انك تعلم هذا ولكنك ضمنيا في كلامك تعني بكلمة دوت نت وليس سي شارب انه فيجوال بيسيك دوت نت




تحياتي
 
إنضم
18 أغسطس 2010
المشاركات
88
الإعجابات
67
النقاط
18
وهنا كود vb.net
كود:
  Public Sub Main()
        Dim addr As String = "
           A860000 : 53
           A860001 : 48
           A860002 : 48
           A860003 : 48
           A860004 : 50
           A860005 : 54
           A860006 : 49
           A860007 : 57
           A860008 : 52
           A860009 : 49
           A86000A : 49
           A86000B : 55
           A86000C : 49
           A86000D : 52
           A86000E : 50
           A86000F : 57
           A860010 : 55
           A860011 : 51
           A860012 : 49
           A860013 : 49"
        Dim inputSearchPattern = "54 49 57 52 49"
        Dim Search = inputSearchPattern.Split(" "c).ToList()  'Convert input sring To array
        Dim Inputreplace = "EF 44 55 F3 FD"
        Dim replace = Inputreplace.Split(" "c).ToList()
        ' clean the input and conver it to key value pair Dictionary
        Dim formattedAddr = addr.Replace(Environment.NewLine, ";").Replace(" "c, "")
        Dim dict = formattedAddr.Split({";"c}, StringSplitOptions.RemoveEmptyEntries).[Select](Function(part) part.Split(":"c)).ToDictionary(Function(split) split(0), Function(split) split(1))

        Dim newdict = New Dictionary(Of String, String)() ' new Dictionary to save the old values and update the new values

        For Each kv In dict
            Dim FoundAtIdx = -1

            For i = 0 To Search.Count - 1

                If String.Equals(kv.Value, Search(i)) Then
                    FoundAtIdx = i
                    Exit For
                End If
            Next

            If FoundAtIdx <> -1 Then
                newdict.Add(kv.Key, replace(FoundAtIdx))
            Else
                newdict.Add(kv.Key, kv.Value)
            End If
        Next
        'convert dictionary to string with the same format
        Dim Result As String = newdict.[Select](Function(x) x.Key & " : " + x.Value).Aggregate(Function(s1, s2) s1 + Environment.NewLine + s2)
        Console.WriteLine(Result)

    End Sub
 

Netpro

Beginner Developer
rank
إنضم
11 سبتمبر 2017
المشاركات
16
الإعجابات
2
النقاط
3
العمر
32
وهنا كود vb.net
كود:
  Public Sub Main()
        Dim addr As String = "
           A860000 : 53
           A860001 : 48
           A860002 : 48
           A860003 : 48
           A860004 : 50
           A860005 : 54
           A860006 : 49
           A860007 : 57
           A860008 : 52
           A860009 : 49
           A86000A : 49
           A86000B : 55
           A86000C : 49
           A86000D : 52
           A86000E : 50
           A86000F : 57
           A860010 : 55
           A860011 : 51
           A860012 : 49
           A860013 : 49"
        Dim inputSearchPattern = "54 49 57 52 49"
        Dim Search = inputSearchPattern.Split(" "c).ToList()  'Convert input sring To array
        Dim Inputreplace = "EF 44 55 F3 FD"
        Dim replace = Inputreplace.Split(" "c).ToList()
        ' clean the input and conver it to key value pair Dictionary
        Dim formattedAddr = addr.Replace(Environment.NewLine, ";").Replace(" "c, "")
        Dim dict = formattedAddr.Split({";"c}, StringSplitOptions.RemoveEmptyEntries).[Select](Function(part) part.Split(":"c)).ToDictionary(Function(split) split(0), Function(split) split(1))

        Dim newdict = New Dictionary(Of String, String)() ' new Dictionary to save the old values and update the new values

        For Each kv In dict
            Dim FoundAtIdx = -1

            For i = 0 To Search.Count - 1

                If String.Equals(kv.Value, Search(i)) Then
                    FoundAtIdx = i
                    Exit For
                End If
            Next

            If FoundAtIdx <> -1 Then
                newdict.Add(kv.Key, replace(FoundAtIdx))
            Else
                newdict.Add(kv.Key, kv.Value)
            End If
        Next
        'convert dictionary to string with the same format
        Dim Result As String = newdict.[Select](Function(x) x.Key & " : " + x.Value).Aggregate(Function(s1, s2) s1 + Environment.NewLine + s2)
        Console.WriteLine(Result)

    End Sub
والله انت شخص محترم ومحترف فى البرمجه بشكرك جدا على زوق
بس فى مشكله بيعمل لكل القيم استبدال وبالشكل دا هيخرب البرنامج انا اريده يعمل استبدال للقيم المحدده فقط
A860005 : 54
A860006 : 49
A860007 : 57
A860008 : 52
A860009 : 49
حتى لو فى ارقام مشابها بعدها او قبلها لا يستبدلها
 
إنضم
18 أغسطس 2010
المشاركات
88
الإعجابات
67
النقاط
18
عفوا

اذا كنت تريد الحفاظ علي قيم الـ Search ولا تريد تغيرها
كود:
Public Sub Main()
        Dim addr As String = "
           A860000 : 53
           A860001 : 48
           A860002 : 48
           A860003 : 48
           A860004 : 50
           A860005 : 54
           A860006 : 49
           A860007 : 57
           A860008 : 52
           A860009 : 49
           A86000A : 49
           A86000B : 55
           A86000C : 49
           A86000D : 52
           A86000E : 50
           A86000F : 57
           A860010 : 55
           A860011 : 51
           A860012 : 49
           A860013 : 49"
        Dim inputSearchPattern = "54 49 57 52 49"
        Dim Search = inputSearchPattern.Split(" "c).ToList()  'Convert input sring To array
        Dim Inputreplace = "EF 44 55 F3 FD"
        Dim replace = Inputreplace.Split(" "c).ToList()
        ' clean the input and conver it to key value pair Dictionary
        Dim formattedAddr = addr.Replace(Environment.NewLine, ";").Replace(" "c, "")
        Dim dict = formattedAddr.Split({";"c}, StringSplitOptions.RemoveEmptyEntries).[Select](Function(part) part.Split(":"c)).ToDictionary(Function(split) split(0), Function(split) split(1))

        Dim SearchMap = Enumerable.Range(0, Search.Count).[Select](Function(i) False).ToList()

        Dim newdict = New Dictionary(Of String, String)() ' new Dictionary to save the old values and update the new values

        For Each kv In dict
            Dim FoundAtIdx = -1

            For i = 0 To Search.Count - 1

                If String.Equals(kv.Value, Search(i)) Then
                    FoundAtIdx = i
                    Exit For
                End If
            Next

            If FoundAtIdx <> -1 Then
                If SearchMap(FoundAtIdx) = False Then
                    SearchMap(FoundAtIdx) = True
                    newdict.Add(kv.Key, replace(FoundAtIdx))
                Else
                    newdict.Add(kv.Key, Search(FoundAtIdx))
                End If
            Else
                newdict.Add(kv.Key, kv.Value)
            End If
        Next
        'convert dictionary to string with the same format
        Dim Result As String = newdict.[Select](Function(x) x.Key & " : " + x.Value).Aggregate(Function(s1, s2) s1 + Environment.NewLine + s2)
        Console.WriteLine(Result)

    End Sub
حل اسهل اخر
اذا لم تكن القيم في Search تهمك يمكنك حل المشكله عن طريق تغير الرمز المراد البحث عنه لرمز مميز مثلا

فقط اضف السطر الي الكود في مشاركتي الاولي بلغه VB.NET
Search(FoundAtIdx) = "-x
كود:
 If FoundAtIdx <> -1 Then
                Search(FoundAtIdx) = "-xx-" 'قم بتغير الرمز الذي تم ايجاده لاول مره الي قيمه اخري مميزه
                newdict.Add(kv.Key, replace(FoundAtIdx))
            Else
                newdict.Add(kv.Key, kv.Value)
            End If
 

Netpro

Beginner Developer
rank
إنضم
11 سبتمبر 2017
المشاركات
16
الإعجابات
2
النقاط
3
العمر
32
عفوا

اذا كنت تريد الحفاظ علي قيم الـ Search ولا تريد تغيرها
كود:
Public Sub Main()
        Dim addr As String = "
           A860000 : 53
           A860001 : 48
           A860002 : 48
           A860003 : 48
           A860004 : 50
           A860005 : 54
           A860006 : 49
           A860007 : 57
           A860008 : 52
           A860009 : 49
           A86000A : 49
           A86000B : 55
           A86000C : 49
           A86000D : 52
           A86000E : 50
           A86000F : 57
           A860010 : 55
           A860011 : 51
           A860012 : 49
           A860013 : 49"
        Dim inputSearchPattern = "54 49 57 52 49"
        Dim Search = inputSearchPattern.Split(" "c).ToList()  'Convert input sring To array
        Dim Inputreplace = "EF 44 55 F3 FD"
        Dim replace = Inputreplace.Split(" "c).ToList()
        ' clean the input and conver it to key value pair Dictionary
        Dim formattedAddr = addr.Replace(Environment.NewLine, ";").Replace(" "c, "")
        Dim dict = formattedAddr.Split({";"c}, StringSplitOptions.RemoveEmptyEntries).[Select](Function(part) part.Split(":"c)).ToDictionary(Function(split) split(0), Function(split) split(1))

        Dim SearchMap = Enumerable.Range(0, Search.Count).[Select](Function(i) False).ToList()

        Dim newdict = New Dictionary(Of String, String)() ' new Dictionary to save the old values and update the new values

        For Each kv In dict
            Dim FoundAtIdx = -1

            For i = 0 To Search.Count - 1

                If String.Equals(kv.Value, Search(i)) Then
                    FoundAtIdx = i
                    Exit For
                End If
            Next

            If FoundAtIdx <> -1 Then
                If SearchMap(FoundAtIdx) = False Then
                    SearchMap(FoundAtIdx) = True
                    newdict.Add(kv.Key, replace(FoundAtIdx))
                Else
                    newdict.Add(kv.Key, Search(FoundAtIdx))
                End If
            Else
                newdict.Add(kv.Key, kv.Value)
            End If
        Next
        'convert dictionary to string with the same format
        Dim Result As String = newdict.[Select](Function(x) x.Key & " : " + x.Value).Aggregate(Function(s1, s2) s1 + Environment.NewLine + s2)
        Console.WriteLine(Result)

    End Sub
حل اسهل اخر
اذا لم تكن القيم في Search تهمك يمكنك حل المشكله عن طريق تغير الرمز المراد البحث عنه لرمز مميز مثلا

فقط اضف السطر الي الكود في مشاركتي الاولي بلغه VB.NET
Search(FoundAtIdx) = "-x
كود:
 If FoundAtIdx <> -1 Then
                Search(FoundAtIdx) = "-xx-" 'قم بتغير الرمز الذي تم ايجاده لاول مره الي قيمه اخري مميزه
                newdict.Add(kv.Key, replace(FoundAtIdx))
            Else
                newdict.Add(kv.Key, kv.Value)
            End If
متشكر جدا اخى ربنا يسعدك
 
الحالة
مغلق و غير مفتوح للمزيد من الردود.

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

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

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

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