Javaالدالة start()
و الدالة end()
في جافا
تعريفهم
start()
: ترجع رقم الـ index للحرف الذي بدأ التطابق من عنده.
end()
: ترجع رقم الـ index للحرف الذي إنتهى التطابق عنده.
بناؤهم
public int start() public int end()
أخطاء محتملة
- IllegalStateException: في حال تم إستدعاء أي واحدة منهما و لم يكن هناك أي تطابق من الأساس.
مثال
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String REGEX = "java"; // REGEX: هو النص الذي سنبحث عنه String INPUT = "java language, java is free, java is amazing"; // INPUT: هو النص الذي سنبحث فيه Pattern p = Pattern.compile(REGEX); // Pattern ثم قمنا بتخزينه في كائن نوعه compile() باستخدام الدالة Pattern إلى REGEX قمنا بتحويل الـ Matcher m = p.matcher(INPUT); // Matcher ثم قمنا بتخزينه في كائن نوعه INPUT على النص matcher() قمنا باستدعاء الدالة int count = 0; // سنستخدم هذا المتغير لتخزين عدد المرات التي تم فيها إيجاد تطابق while ( m.find() ) // سيبحث عن التطابق التالي INPUT موجود في الـ Pattern هنا طالما أن الـ { count++; // واحد في كل مرة يتم فيها إيجاد تطابق count هنا قمنا بزيادة الـ System.out.println( "start(): " + m.start() ); // هنا قمنا بطباعة أي بدأ التطابق System.out.println( "end(): " + m.end() ); // هنا قمنا بطباعة أي إنتهى التطابق System.out.println(); } System.out.println( "Match number: " +count ); // هنا قمنا بطباعة عدد المرات التي تم فيها إيجاد تطابق } }
سنحصل على النتيجة التالية عند التشغيل.
start(): 0 end(): 4 start(): 15 end(): 19 start(): 29 end(): 33 Match number: 3
هنا أنت مجبر أن تستخدم الدالة find()
لأنك تريد معرفة جميع الأماكن التي ظهر فيها تطابق.
لو إستخدمت الدالة lookingAt()
بدلاً من الدالة find()
لكان البرنامج سيستمر في التنفيذ إلى أن توقفه بنفسك, و كان سيظهر لك فقط أول مكان تم فيه إيجاد تطابق.
ملاحظة: في المثال السابق كان بإمكاننا تعريف المتغير REGEX
بهذه الطريقة:
String REGEX = "//bjava";