После прочтения текстового файла, как я могу определить, присутствует ли в этом файле строка или нет, используя Java?
Я пытался:
public class SearchFaq {
public static List<String> readFileInList(String fileName) {
List<String> lines = Collections.emptyList();
try {
lines = Files.readAllLines(Paths.get(fileName), StandardCharsets.UTF_8);
} catch (IOException e) {
// do something
e.printStackTrace();
}
return lines;
}
public static void main(String[] args) {
List l = readFileInList("/home/pavankalyan/Desktop/sample.aiml");
Iterator<String> itr = l.iterator();
while (itr.hasNext()) {
if (itr.next().equalsIgnoreCase("About Company")) {
System.out.println(itr.next());
}
}
}
}
Но это не сработало. Как узнать, присутствует ли в файле строка («О компании»)?
Что вы имеете в виду под не дает правильного результата - Пожалуйста, объясните его текущее поведение
Вы видите, РАВНА ли строка вашей строке, а не СОДЕРЖИТ ее.
Файл содержит строку, которую я упомянул, например, «О компании»), но он не печатает значение.
Спасибо, @ zack6849, я пробовал использовать contains, и он работает правильно.




if (itr.next().equalsIgnoreCase("About Company"))
System.out.println(itr.next());
Вы дважды вызываете itr.next в приведенном выше коде. Итак, если совпадение найдено, он напечатает следующую строку.
Измените это как
String line = itr.next();
if (line.equalsIgnoreCase("About Company")) {
System.out.println(line);
}
Однако вы четко не упомянули, что именно означает найти, присутствует ли в файле строка («О компании»)?. Если это слово должно быть строкой само по себе, то приведенный выше код должен работать. Если вы хотите печатать, даже если это часть строки, вы должны использовать contains
String line = itr.next();
if (line.toLowerCase().contains("About Company".toLowerCase())) {
System.out.println(line);
}
проблема связана с equalsIgnoreCase (), мы должны использовать Contains ("строка"), тогда он даст результат
Что не так с вашим кодом?