Как проверить, присутствует ли строка в файле или нет, используя java?

После прочтения текстового файла, как я могу определить, присутствует ли в этом файле строка или нет, используя 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());
            }
        }
    }
}

Но это не сработало. Как узнать, присутствует ли в файле строка («О компании»)?

Что не так с вашим кодом?

user7 24.07.2018 17:05

Что вы имеете в виду под не дает правильного результата - Пожалуйста, объясните его текущее поведение

user7 24.07.2018 17:06

Вы видите, РАВНА ли строка вашей строке, а не СОДЕРЖИТ ее.

Zachary Craig 24.07.2018 17:06

Файл содержит строку, которую я упомянул, например, «О компании»), но он не печатает значение.

pavan kalyan 24.07.2018 17:08

Спасибо, @ zack6849, я пробовал использовать contains, и он работает правильно.

pavan kalyan 24.07.2018 17:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
5
51
1

Ответы 1

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 ("строка"), тогда он даст результат

pavan kalyan 24.07.2018 17:21

Другие вопросы по теме