从Java中的字符串中提取Float值

时间:2016-06-03 07:20:09

标签: java regex string floating-point

我有一个像"Humidity: 14.00% Temperature:28.00 C"这样的字符串。

我想从字符串中提取两个浮点值,我该怎么办?

3 个答案:

答案 0 :(得分:6)

首先,看看@Bathsheba的评论 我有一种直截了当的方式,但这并不聪明或普遍。

String[] array = string.replaceAll("[Humidity:|Temperature:|C]", "").split("%");

您将收到String[]{"14.00", "28.00"},然后您可以使用FloatFloat.parse()方法将这些数组值转换为Float.valueOf()

Arrays.stream(array).map(Float::valueOf).toArray(Float[]::new);

答案 1 :(得分:3)

(免责声明:如果你想要一些更清洁和可重复使用的代码,你应该看看@Andrew Tobilko的答案。)

首先,您需要将字符串分成两个子字符串。您可以使用 String a = yourString.substring(10,14); String b =yourString.substring(29,33);

执行此操作

然后,使用Float.parseFloat(String s)从字符串中提取浮点数:

Float c=Float.parseFloat(a); Float d= Float.parseFloat(b);

那就是你的String正好是你写的那个。否则,在调用String.substring(int beginIndex,int endIndex)时,应确保使用正确的索引。

答案 2 :(得分:2)

您可以尝试使用正则表达式

String regex="([0-9]+[.][0-9]+)";
String input= "Humidity: 14.00% Temperature:28.00 C";

Pattern pattern=Pattern.compile(regex);
Matcher matcher=pattern.matcher(input);

while(matcher.find())
{
    System.out.println(matcher.group());
}