如何从字符串列表中获取网格?
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);
我正在尝试过滤包含有关网格和网格信息的字符串列表。我有一个字母图案,可用于构建网格。那么,如何使用模式得到这个网格?
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);