如何从字符串列表中获取网格?

How to get a grid from list of strings?

我正在尝试过滤包含有关网格和网格信息的字符串列表。我有一个字母图案,可用于构建网格。那么,如何使用模式得到这个网格?

4 3
AABC
CABB
ACCA
2,1; 0,0; 3,0;

我必须使用模式 ABC 作为新列表只执行网格(带字母的字符串)。

结果应该是:

AABC
CABB
ACCA

我的代码:

List<String> data = Files.lines(Path.of("src/main/resources/file.txt")).collect(Collectors.toList());
List<String> grid = new ArrayList<>();

String pattern = "ABC";

data.forEach(System.out::println);

for(int i = 0; i <= data.size(); i++){
    int finalI = i;
   grid = data.stream().filter(s -> s.startsWith(pattern.split("")[finalI])).collect(Collectors.toList());
}
grid.forEach(System.out::println);

它没有过滤并且索引越界。

如果我理解正确,您只需要仅包含您指定的字母的字符串(文件中的行)。如果是这样,只需使用有效字母创建字符 class 并使用 String.matches:

进行过滤
List<String> data = Files.readAllLines(Path.of("src/main/resources/file.txt"));

String regex = "[ABC]+";

List<String> grid = data.stream()
                        .filter(str -> str.matches(regex))
                        .collect(Collectors.toList());

grid.forEach(System.out::println);