3 回答

TA贡献1934条经验 获得超2个赞
您可以使用 Java Stream API 过滤行并为要查找的行生成正则表达式:
URL url = new URL("http://www.nbp.pl/kursy/xml/dir.txt");
URLConnection conn = url.openConnection();
Pattern identifier = getIdentifier("c", LocalDate.of(2019, Month.FEBRUARY, 5));
try (BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8))) {
reader.lines()
.filter(line -> identifier.matcher(line).matches())
.forEach(System.out::println);
}
此示例使用LocalDate,但您可以轻松地将其更改为字符串,或者您喜欢的其他内容。该getIdentifier()方法可能如下所示:
private Pattern getIdentifier(String start, LocalDate date) {
return Pattern.compile(start + ".*" + date.format(DateTimeFormatter.ofPattern("YYMMdd")));
}
您的示例的模式是c.*190205.

TA贡献1877条经验 获得超6个赞
如果您正在寻找特定日期,那么您知道如何构建字符串的开头,因此您可以执行以下操作:
String stringToFind = buildString(date);
String line;
while ((line = br.readLine()) != null) {
if (line.startsWith(stringToFind)) {
// do something...
break;
}
}
添加回答
举报