selenium 比较两个文件时忽略某些值

3wabscal  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(156)

我有两个文件File1.txt和File2.txt。我正在比较两个文件,并使用coreJava突出显示差异。但是在比较时,有一些值我应该忽略。
比如说。例如,XYZ和ZYX所包含的值在任何地方都应被忽略。
例如,file 1和file 2有以下值,其中我们看到XYZ YZX的值多次出现,因此在比较中应该忽略特定的数字。

File1.txt

-----------------------------
XYZ12345ZYX
abcddd......
I am going to Delhi .............
Mumbai isgoodXYZ6789ZYX

字符串

File2.txt

----------------------------
XYZ111111ZYX
abcddd......
I am going to Delhi .............
Mumbai isgoodXYZ00000ZYX


所以在上面-
1.应忽略值12345(来自file 1)和111111(file 2)
1.值6789(来自file 1)和00000(来自file 2)应被忽略
有没有流行的方法/算法/逻辑来处理这个问题。有人有经验吗?

k4ymrczo

k4ymrczo1#

import java.io.*;
import java.nio.file.*;
import java.util.stream.*;
import java.util.regex.*;

public class FileComparison {
    public static void main(String[] args) throws IOException {
        Path file1Path = Paths.get("File1.txt");
        Path file2Path = Paths.get("File2.txt");

        // Use process method below to remove random text 
        // between your static bounded text 
        List<String> file1Lines = processFile(file1Path);
        List<String> file2Lines = processFile(file2Path);

        // Now you can compare file1Lines and file2Lines

    }

    // This method will identify pattern and replace the random text
    // identified by regex with a constant value
    private static List<String> processFile(Path filePath) throws IOException {
        Pattern pattern = Pattern.compile("XYZ.*?ZYX");
        return Files.lines(filePath)
            .map(line -> {
                Matcher matcher = pattern.matcher(line);
                return matcher.replaceAll("XYZIGNOREZYX");
            })
            .collect(Collectors.toList());
    }
}

字符串
正则表达式模式.*?匹配任意数量的任意字符,但尽可能少地匹配(这称为非贪婪匹配-使用此链接了解更多信息)。
这对于正确处理包含多个“XYZ... ZYX”模式的行是必要的。
replaceAll方法将正则表达式的所有匹配项替换为“XYZIGNOREZYX”

相关问题