الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استفسار عن search

بدأه cs_abeer في 9 أبريل 2010 · 1 رد · 541 مشاهدة · في قسم البرمجة بــ Javascript
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

يوجد عندي 3 اسئلة ضرورية اذا سمحتم

اول سؤال انا اريد ان اعمل searchsubstring

يعني انا اريد ان احدد string معينه واطلب بعدها من اليوز ان يبحث على اي جزء هو يريده منها

واريد منه تحديد الاندكس لها عندما يجدها وسوف اضع حلي هنا ولكن مشكلتني انني اريد ان يبحث عن الجزء الذي يريد وعندما يجده لا يتوقف ويكمل بحث لنهاية السترينج يعني يوجده اول مره ويكمل طريقه في السترينج لربما كانت في مكان اخر ولم استطع عمل هذا ان لا اجعله يتوقف في البحث بعد ان يجدها اول مره

والسؤال الثاني انني اريد معرفه كم مره تكرر في حرف في السترينج الاصليه وايضا الجزء الذي يدخله اليوزر فمثلا

السترينج الاصليه abgga

a تكررت مرتين

b تكررت مره

g تكررت مرتين

من دون ان يرجع ويكتب ايضا ال g التانيه تكررت مرتين

ارجوكم ساعدوني لم اعرف فعل ذلك وسوف اريكم الحل الذي كتبته

والسؤال الاخير اريد كل ال methods المتعلقه بال array وماذا تفعل كل واحده

 <head>
      <title>
         Searching Strings with indexOf and lastIndexOf
      </title>
      <script type = "text/javascript">
         <!--
         var letters = "abcdefghijklmnopqrstuvwxyzabcdefghijklm";

         function buttonPressed() 
         {
            var searchForm = document.getElementById( "searchForm" );
            var inputVal = document.getElementById( "inputVal" );

            searchForm.elements[2].value = 
               letters.indexOf( inputVal.value );        
            searchForm.elements[3].value = 
               letters.lastIndexOf( inputVal.value );    
            searchForm.elements[4].value = 
               letters.indexOf( inputVal.value, 12 );    
            searchForm.elements[5].value = 
               letters.lastIndexOf( inputVal.value, 12 );
         } // end function buttonPressed
         // -->
      </script>
   </head>
   <body>
      <form id = "searchForm" action = "">
         <h1>The string to search is:<br />
             abcdefghijklmnopqrstuvwxyzabcdefghijklm</h1>
         <p>Enter substring to search for 
         <input id = "inputVal" type = "text" />
         <input name = "search" type = "button" value = "Search"
                onclick = "buttonPressed()" /><br /></p>

         <p>First occurrence located at index 
         <input id = "first" type = "text" size = "5" />
         <br />Last occurrence located at index
         <input id = "last" type = "text" size = "5" />
         <br />First occurrence from index 12 located at index 
         <input id = "first12" type = "text" size = "5" />
         <br />Last occurrence from index 12 located at index
         <input id = "last12" type = "text" size = "5" /></p>
      </form>
   </body>
</html>

تم تعديل هذه المشاركة بواسطة cs_abeer في 9 أبريل 2010 في 18:40

#2

السلام عليكم و رحمة الله و بركاته,,

الدالة indexOf ممكن إعطاءها الـ startIndex أي الـ Index المراد البدء به..

لو أننا أنشأنا متغير مؤقت currentIndex نحتاج إلى Loop كي نقوم بالمرور على جميع المفردات المشابهة في البحث..

نفترض أن النص لدينا aeeddffc محفوظ في متغير باسم searchText و أدخل المستخدم e نحفظه في متغير باسم userInput مثلا، سيقوم البرنامج بفعل التالي..

تعريف currentIndex بقيمة مبدئية 0..

ملاحظة: يفضل وجود Array نقوم بحفظ الـ Indexes التي تم العثور على الـ userInput فيها.. و ليكن إسمه foundIndexes

الآن الـ Loop تعرف على النحو التالي:

while ((currentIndex= letters.indexOf(userInput, currentIndex)) != -1) {

هذه الـ Loop ستنفذ الكود بداخلها مع كل تكرار..

من الممكن كتابة الداخل على النحو التالي:

while () {
foundIndexes[foundIndexes.length] = currentIndex;
currentIndex++;
}

السطر الأول يسجل الـ Index الذي تم العثور على الـ userInput عنده في الـ Array.. و السطر الثاني مهم جداً جداً و إلا دخل البرنامج في Loop أبدية..

بعد الخروج من الـ Loop أصبح لدينا التالي:

1. عدد التكرار من خلال foundIndexes.length

2. تفاصيل اماكن التكرار من خلال البيانات في الـ Array

هذا بالنسبة للسؤال الأول..

بالنسبة لعدد مرات تكرار ما يدخله اليوزر الإجابة الأولى تساعدك على برمجة هذه الجزئية..

أما بالنسبة لكتابة التكرارات.. فأنتظر منك محاولة حل في ضوء ما ذكرته أنا..

تحياتي،،

n622971709_461151_8573.jpg

مواضيع مشابهة