java - 如何从String java中提取未知数字
问题描述
我有一个模态句子,例如“您的余额是 29,2 欧元”,我需要获取一个数字并存储它。但是一个数字是动态的。所以不知道具体数值。它可以是整数也可以是小数。然后我需要将此值(已存储的值)与下一页上的值进行比较。
感谢您的任何帮助 :)
解决方案
欢迎来到 SO :)
鉴于您的字符串是相当静态的并且您想在其中找到一个值,我建议您使用Apache Commons 的 substringBetween。如果您不想添加额外的依赖项,那么您可以自己实现此方法,它看起来像这样:
public static String substringBetween(String initial, String open, String close) {
int start = str.indexOf(open) + open.length();
int end = str.indexOf(close, start);
return str.substring(start, end);
}
然后你会遇到的以下问题是用逗号分隔小数不是Java的标准,所以29,2
不会被Double.valueOf
or解决Double.parseDouble
。您将需要:
- 用点替换逗号,这可以通过使用来实现
str.replaceAll(",", ".")
- 使用NumberFormat。例如,法国语言环境的默认 NumberFormat 使用逗号分隔小数。
最终解决方案将如下所示:
public static void main(String[] args) throws ParseException {
String initialString = "Your balance is 29,2 euro";
double doubleValue = parseAsDouble(findValue(initialString));
System.out.println(doubleValue);
}
private static String findValue(String initial) {
return StringUtils.substringBetween(initial, "Your balance is ", " euro");
}
private static double parseAsDouble(String value) throws ParseException {
return NumberFormat.getInstance(Locale.FRANCE)
.parse(value)
.doubleValue();
}
如前所述,您可以在用点替换逗号后更改findValue
to use substring
orregex
和 to use 的实现parseAsDouble
。Double.parseDouble
推荐阅读
- python - 为什么 Python Pandas 中的 Read_HTML 不起作用?
- html - 为什么 bootstrap4 的汉堡图标不显示小屏幕的菜单?
- mysql - 如何在 MySQL 中将字符串列作为列表读取?
- php - 下拉列表未访问 WordPress 子目录数据库中的类别项目
- python-3.9 - 尝试导入 pandas_market_calender 时出现 NP_NAT 错误
- python - 如何在我的条形图顶部添加空间?
- sql - Sqlite 按不同计数分组
- terminal - 了解 netsat 命令的输出
- c - Word finder 未按预期输出
- multithreading - 为什么并行化不能提供更大的加速?