كيفية البحث عن كلمة معينة في ملف نصي في جافا
-
28-09-2019 - |
سؤال
كيف تبحث عن كلمة معينة في ملف نصي في جافا؟ باستخدام قارئ مخزنة ، لدي هذا الرمز ، لكنني أحصل على ملف
java.lang.ArrayIndexOutOfBoundsException
الرجاء مساعدتي في تحديد الخطأ في برنامجي.
System.out.println("Input name: ");
String tmp_name=input.nextLine();
try{
FileReader fr;
fr = new FileReader (new File("F:\\names.txt"));
BufferedReader br = new BufferedReader (fr);
String s;
while ((s = br.readLine()) != null) {
String[] st = s.split(" ");
String idfromtextfile=st[0];
String nemfromtextfile = st[1];
String scorefromtextfile=st[2];
if(nemfromtextfile.equals(tmp_name)){
System.out.println("found");
}else{
System.out.println("not found");
}
}
}catch(Exception e){ System.out.println(e);}
names.txt يشبه هذا:
1
a
0
2
b
0
المحلول
يتوقع الكود الخاص بك أن يحتوي كل سطر في الملف على ثلاث كلمات مفصولة بالمساحة. لذلك يجب أن يبدو ملفك هكذا:
1 a 0
2 b 0
ال ArrayIndexOutOfBoundsException
يحدث إذا كان هناك سطر في الملف لا يحتوي على ثلاث كلمات مفصولة بالمساحة. على سبيل المثال ، قد يكون هناك سطر فارغ في ملفك.
يمكنك التحقق من هذا في الكود الخاص بك مثل هذا:
if ( st.length != 3) {
System.err.println("The line \"" + s + "\" does not have three space-separated words.");
}
نصائح أخرى
يمكنك استخدام مجموعة النمط/المطابقة الموصوفة هنا, ، أو جرب الماسح الضوئي. استخدم القارئ المخزنة مثل هذا:
BufferedReader in
= new BufferedReader(new FileReader("foo.in"));
واستخراج السلسلة مع in.toString()
إذا كان النص ضخمًا ولم ترغب في قراءته مرة واحدة واحتفظ به في الذاكرة. يمكنك قراءة خط باستمرار مع readline () ، والبحث في كل من خط الإخراج لنمط ما.
فيما يلي مثال على كيفية القيام بذلك باستخدام BufferedReaderنص الارتباط