سؤال

كيف يمكنك إنشاء تعبير عادي لسلسلة معينة؟وهل يمكنك القيام بذلك في التأكيد (جزء الشرط المسبق من الكود)؟

لقد كنت أبحث في Google ولكن لم أتمكن من الحصول على أي شيء مقنع.

السؤال هو مثل هذا:

أضف شرطًا مسبقًا إلى إجراء إنشاء القسم (الفصل الذي نعمل عليه) والذي يضمن صحة رقم الهاتف.هناك ثلاثة تنسيقات محتملة لأرقام الهواتف الصالحة.يتكون رقم الهاتف الصالح من واحد مما يلي:

  • ثمانية أرقام، أولها غير الصفر
  • صفر رائد ، رمز منطقة غير صفري واحد ، ثم ثمانية أرقام ، أولها غير صفري
  • A "+" رائدة ، تليها رمز البلد المكون من رقمين ، ثم رمز منطقة غير صفري واحد ، ثم ثمانية أرقام ، أولها غير صفري

يجب تجاهل أي مسافات مضمنة عند التحقق من صحة رقم الهاتف.

من المقبول ، ولكن غير مطلوب ، إضافة فئة Phone_Number إلى النظام كجزء من حل هذه المشكلة.

هل كانت مفيدة؟

المحلول

هناك عدة أسئلة مختلفة يجب الإجابة عليها:

  1. كيفية التحقق مما إذا كانت سلسلة معينة تطابق تعبيرًا عاديًا محددًا في إيفل؟يمكن للمرء استخدام فئة RX_PCRE_MATCHER من مكتبة جوبو.الخاصية compile يسمح بتعيين التعبير العادي والميزة المطلوبة recognizes يسمح باختبار ما إذا كانت السلسلة تطابقها.

  2. كيف تكتب تعبيرًا عاديًا لمواصفات رقم الهاتف المحدد؟شيء مثل "(|0[1-9]|\+[0-9]{2}[1-9])[1-9][0-8]{7}" ينبغي أن أفعل على الرغم من أنني لم التحقق من ذلك.من الممكن أخذ المسافات البيضاء المتوسطة في الاعتبار في التعبير العادي نفسه، ولكن من الأسهل التخلص منها قبل الانتقال إلى مُطابق التعبير العادي عن طريق تطبيق prune_all (' ') على سلسلة الإدخال.

  3. كيفية إضافة شرط مسبق إلى إجراء الإنشاء للتحقق من أن الوسيطة تفي به؟لنفترض أننا قمنا ببناء دالة من العناصر السابقة is_phone_number هذا يأخذ STRING ويعود أ BOOLEAN يشير إلى ما إذا كانت السلسلة المحددة تمثل رقم هاتف صالحًا.الحل المباشر هو الكتابة

    make (tel: STRING)
        require
            is_phone_number (tel)
        ...
    

    ولها ميزة is_phone_number في الفصل DEPARTMENT بحد ذاتها.ولكن هذا يمنعنا من التحقق مما إذا كانت السلسلة المحددة تمثل رقم هاتف قبل استدعاء إجراء الإنشاء هذا.لذلك فمن المنطقي أن تتحرك is_phone_number الى الصف PHONE_NUMBER_VALIDATOR تلك الفئة DEPARTMENT سوف يرث.وبالمثل، إذا PHONE_NUMBER يحتاج إلى التحقق من صحة السلسلة وفقًا لقواعد محددة، فيمكنها أن ترث PHONE_NUMBER_VALIDATOR وإعادة استخدام الميزة is_phone_number.

نصائح أخرى

halikal عملت في الواقع هذا واحد خارج، ولكن لا يشارك dud حتى الآن ...

هذا يعمل في Eiffelstudio 6.2 (ملاحظة - هذا هو Gobo)

http://se.inf.ethz.ch/كبار السن / الناس / Leitner / gobo_guerinines / naming_conventions.html

رقم هاتف صالح يتكون من واحد من:

  • ثمانية أرقام، الأول منها غير صفرية
  • صفر رائد، رمز منطقة غير صفرية واحدة غير صفرية، ثم ثمانية أرقام، الأول منها غير صفرية
  • رائدة + تليها رمز بلد رقمين، ثم رمز منطقة غير صفرية واحدة غير صفرية، ثم ثمانية أرقام، الأول منها غير صفرية

    يجب تجاهل أي مسافات مضمنة عند التحقق من صحة رقم الهاتف. giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top