في القسم السابق تعلمنا الطريقة الأولى - تحليل السلاسل باستخدام المحددات الافتراضية. في هذا القسم تعلمنا الطريقة الثانية - تحليل السلاسل باستخدام التعبيرات العادية كمحددات .
علينا أن نعرف أنه إذا أراد كائن Scanner استخدام علامة الفصل الافتراضية، وهي عبارة عن مسافة، لتحليل البيانات الموجودة في السلسلة، فيجب استخدام مسافات لفصل البيانات الموجودة في السلسلة عن الأحرف الأخرى، وإلا فسيتم ذلك لا تكون قادرة على تحليل ما نحتاج إليه من البيانات.
في الواقع، يمكن لكائن Scanner أيضًا استدعاء الأساليب:
useDelimiter(regular Express);
استخدم التعبيرات العادية كمحددات، أي أنه عندما يقوم كائن الماسح الضوئي بتوزيع السلاسل، فإنه يستخدم السلاسل التي تطابق التعبير العادي كمحددات.
على سبيل المثال، قم بتحليل السلسلة باستخدام التعبير العادي (يطابق كافة السلاسل غير الرقمية) String regex = [^0123456789.]+ كعلامة فاصلة.
importjava.util.*;publicclassMain{publicstaticvoidmain(Stringargs[]){Stringcost=قائمة فاتورة الهاتف: رسوم المكالمات المحلية 66.66 يوان، رسوم المكالمات بعيدة المدى 166.66 يوان، رسوم الرسائل النصية 16.16 يوان؛Scannerscanner=newScanner(cost);scanner. useDelimiter([^0123456789.]+);// يقوم الماسح الضوئي بتعيين علامة الفصل doublesum=0;while(scanner.hasNext()){try{doubleprice=scanner.nextDouble();sum=sum+price;System.out. println(price);}catch (InputMismatchExceptionexp){Stringt=scanner.next();}}System.out.println(إجمالي تكلفة الاتصال: +sum+yuan);}}
نتائج التشغيل هي كما يلي:
66.66166.6616.16 إجمالي تكلفة الاتصال: 249.48 يوان