import java.util.regex.*;
public class CurrencyParser {
/**
* Парсит курс USD с актуальной страницы ЦБ
* РФ[](https://cbr.ru/currency_base/daily/)
* Структура: таблица с строкой
*
* | 840 |
* USD | ...
* 76,0535 |
*
*/
public static double parseUSD(String html) {
// Более точный и надёжный regex под текущую верстку сайта
Pattern pattern = Pattern.compile(
"USD | \\s*" +
"1 | \\s*" +
"Доллар США | \\s*" +
"([0-9,]+) | ",
Pattern.DOTALL | Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(html);
if (matcher.find()) {
String rateStr = matcher.group(1).replace(',', '.'); // заменяем запятую на точку
try {
return Double.parseDouble(rateStr);
} catch (NumberFormatException e) {
System.err.println("Ошибка парсинга числа: " + matcher.group(1));
}
}
return -1; // не удалось найти
}
}