如何使用bufferedreader检查csv中是否存在多个条件字符串?

jexiocij  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(375)

我正在使用 BufferedReader 要检查文件中是否存在多个字符串,我使用以下脚本:

int n = 41; // The line number
String line;
BufferedReader br = new BufferedReader(new FileReader(context.tfilelistdir)); 
for (int i = 0; i < n; i++)
{
    line = br.readLine();
    if (line.contains("$$WORDS$$ ABC") && line.contains("$$WORDS$$ XYZ"))
    {
        do something
    }
}

这里我需要检查一下 $$WORDS$$ ABC 还有 $$WORDS$$ XYZ 两者都存在于csv文件中的不同行/列中。bufferedreader的行不接受 && . 它只适用于 || (或)condition bufferedreader在不断读取记录时覆盖条目。
有什么方法可以检查csv文件中是否存在两个条件(字符串)?

w3nuxt5m

w3nuxt5m1#

如果子字符串位于不同的行中,则需要引入一些布尔标志来跟踪每个特定条件。
另外,最好使用 try-with-resources 确保文件/读取器资源已正确关闭,并检查在读取过程中是否未到达文件结尾(然后重试) br.readLine() 退货 null ).

int n = 41; // The line number
String line;
try (BufferedReader br = new BufferedReader(new FileReader(context.tfilelistdir))) {
    boolean foundABC = false;
    boolean foundXYZ = false;
    int i = 0;
    while ((line = br.readLine()) != null && i++ < n) { // read at most n lines

        foundABC |= line.contains("$$WORDS$$ ABC"); // will be true as soon as ABC detected
        foundXYZ |= line.contains("$$WORDS$$ XYZ"); // will be true as soon as XYZ detected
        if (foundABC && foundXYZ) { // not necessarily in the same line
            //do something
        }
    }
}

相关问题