2013-02-26 2 views
1

Могу я попросить вас рассказать мне, как я могу решить эту проблему? Мне нужно сравнить inputWord с строкой внутри .txt-файла, и если она найдена, верните всю строку, но если нет, покажите «слово не найдено».Android - Сравнение ввода строк в текстовом файле

Пример:

inputWord: abacus 

Text file content: 
abaca - n. large herbaceous Asian plant of the banana family. 
aback - adv. archaic towards or situated to the rear. 
abacus - n. a frame with rows of wires or grooves along which beads are slid, used for calculating. 
... 
so on 

Returns: abacus with its definition 

Что я пытаюсь сделать, это сравнить мой inputWord на слова перед «-» (дефис в качестве разделителя), если они не матч, перейти к следующей строке. Если они совпадают, скопируйте всю строку.

Надеюсь, что это не похоже на то, что я просил вас «сделать домашнее задание», но я попробовал учебники вокруг разных форумов и сайтов. Я также читаю java docs, но я действительно не могу их собрать, чтобы выполнить это.

Спасибо заранее!

UPDATE:

Вот мой текущий код:

if(enhancedStem.startsWith("a")) 
       { 
        InputStream inputStream = getResources().openRawResource(R.raw.definitiona); 
        try { 
         BufferedReader in = new BufferedReader(new InputStreamReader(inputStream)); 
         String s = in.readLine(); 
         String delimiter = " - "; 
         String del[]; 
         while(s != null) 
         { 
          s = in.readLine(); 
          del = s.split(delimiter); 
          if (enhancedStem.equals(del[0])) 
          { 
           in.close(); 
           databaseOutput.setText(s); 
           break; 
          } 
         } 
         in.close(); 
         } 
        catch (FileNotFoundException e) { 
         databaseOutput.setText("" + e); 
        } 
        catch (IOException e1) { 
         databaseOutput.setText("" + e1); 
        } 
       } 

Спасибо большое! Вот что я придумал, и он правильно возвращает определение входов, но проблема в том, что когда я ввожу слово, не найденное в текстовом файле, приложение выходит из строя. Фраза catch не работает. Подумайте, как я могу это поймать? Logcat говорит NullPointerExcepetion на линии 4342, которая является

s = in.readLine(); 

ответ

2

Предполагая, что формат каждой строки в текстовом файле равномерна. Это можно сделать следующим образом:

1) Прочитайте файл по строкам.

2) Разделите каждую строку на основе разделителя и соберите раздвоенные маркеры String в массиве String temp.

3) Первая запись в массиве токенов temp будет словом перед знаком «-».

4) Сравните первую запись в массиве temp со строкой поиска и верните всю строку, если есть совпадение.

После код можно поместить в функции для достижения этой цели:

String delimiter = "-"; 
String[] temp; 
String searchString = "abacus"; 

BufferedReader in = new BufferedReader(new FileReader(file)); 

while (in.readLine() != null) { 
    String s = in.readLine(); 

    temp = s.split(delimiter); 

    if(searchString.equals(temp[0])) { 
     in.close(); 
     return s; 
    } 
} 

in.close(); 
return ("Word not found"); 

Надеется, что это помогает.

+0

Привет! Большое вам спасибо за ответ. Я попробую этот код, как только я вернусь домой! :) –

+0

У меня ошибка: java.io.FileNotFoundException: : open failed: ENOENT (нет такой файл или каталог) Я попытался помещать их вместо «файла»: «C: \\ workspace \\ raw \\ definitiona.txt \\" и "\\ res \\ raw \\ definitiona. txt " но оба говорят, что не найдено. –

+0

Попробуйте удалить лишний \\ в конце из «C: \\ workspace \\ raw \\ definitiona.txt \\ ". Должен работать –

0

вы можете попробовать, как:

myreader = new BufferedReader(new FileReader(file)); 
String text = "MyInput Word"; 

while(!((text.equals(reader.readLine())).equals("0"))); 
+0

Привет! Спасибо. Я постараюсь, если это скоро сработает, когда я вернусь домой. –

+0

У меня были проблемы с путём filereader. он не может найти мой каталог, даже если я ввожу точный путь к моему текстовому файлу. :( –

Смежные вопросы