تعلمنا في الأقسام السابقة كيفية استخدام طريقة Split() لفئة String لتحليل سلسلة. في هذا القسم، سنتعلم كيفية استخدام كائن StringTokenizer لتحليل سلسلة. على عكس طريقة Split()، فإن كائن StringTokenizer لا يستخدم التعبيرات العادية كعلامة فاصلة.
بادئ ذي بدء، نحتاج إلى معرفة مفهوم - رموز اللغة . ما يسمى برموز اللغة يعني أنه عندما نقوم بتحليل سلسلة ما، فإننا نحلل السلسلة إلى كلمات يمكن استخدامها بشكل مستقل، وتسمى هذه الكلمات رموز اللغة.
على سبيل المثال، بالنسبة للسلسلة مرحبًا بك، إذا تم استخدام المسافات كعلامة تحديد للسلسلة، فإن السلسلة تحتوي على ثلاث كلمات، أي ثلاثة رموز لغة. بالنسبة للسلسلة، مرحبًا بك، إذا تم استخدام الفاصلة كعلامة محددة للسلسلة، فإن السلسلة تحتوي أيضًا على ثلاثة رموز لغة.
عندما نقوم بتحليل سلسلة ما وتفكيكها إلى كلمات يمكن استخدامها بشكل مستقل، يمكننا استخدام فئة StringTokenizer في الحزمة java.util، والتي تحتوي على مُنشئين شائعي الاستخدام:
قم بإنشاء محلل للسلاسل، باستخدام علامات التحديد الافتراضية ، أي أحرف المسافات (تعتبر عدة مسافات بمثابة مسافة واحدة)، وأحرف تغذية الأسطر، وأحرف إرجاع السطر، وأحرف Tab، وأحرف التغذية كعلامات فصل.
ينشئ محللًا للسلسلة. يتم استخدام الأحرف الموجودة في المعلمة delim كمحددات.
ملاحظة : أي مجموعة من المحددات تظل محددًا.
على سبيل المثال:
StringTokenizerfenxi=newStringTokenizer(youarewelcome);StringTokenizerfenxi=newStringTokenizer(you,are;welcome,,;);
يمكن للمحلل استدعاء كائن StringTokenizer باستخدام طريقة nextToken() للحصول على رموز اللغة في السلسلة واحدًا تلو الآخر يتم الحصول على رمز اللغة، ويتم تقليل قيمة متغير العد في محلل السلسلة تلقائيًا بمقدار 1. القيمة الأولية لمتغير العد تساوي عدد الكلمات في السلسلة.
عادةً ما يتم استخدام حلقة while للحصول على رموز اللغة واحدًا تلو الآخر، للتحكم في الحلقة، يمكنك استخدام طريقة hasMoreTokens() في فئة StringTokenizer، طالما أن هناك رموز لغة في السلسلة، أي القيمة إذا كان متغير العدد أكبر من 0، فإن هذه الطريقة تُرجع صحيحًا، وإلا فإنها تُرجع خطأ. بالإضافة إلى ذلك، يمكنك مطالبة المحلل باستدعاء طريقة countTokens() في أي وقت للحصول على قيمة متغير العدد في المحلل.
على سبيل المثال:
importjava.util.*;publicclassMain{publicstaticvoidmain(Stringargs[]){Strings=welcometodotcpp(thankyou),nicetomeetyou;StringTokenizerfenxi=newStringTokenizer(s,(),);intnumber=fenxi.countTokens();while(fenxi.hasMoreTokens()) ){Stringstr=fenxi.nextToken();System.out.print(str+);}System.out.println(إجمالي الكلمات: +number+);}}
نتائج التشغيل هي كما يلي:
مرحبًا بكم في dotcppthankyounice to you إجمالي الكلمات: 9