如何从字符串中的某个索引开始返回一个float?

时间:2010-12-06 09:40:00

标签: java regex string

我有一个包含以下数据的字符串:

String data = "Some information and then value1=17561.2 and then value2=15672.2"

如何在Java中最有效地返回17561.2?

String queryString = "value1";

while data.charAt(outputStr.indexOf(queryString)+queryString.length()) is a number

    -save it to an array
    which you later convert to a String

elihw

这似乎有点令人费解。

这里的正则表达式是完美的吗?我如何制作正则表达式来做到这一点?

1 个答案:

答案 0 :(得分:1)

要在字符串中查找十进制数(或int),可以使用正则表达式

[+-]?(?:\d*\.\d+|\d+)

这不会以指数表示法找到浮点数(1.2E15或其他一些)。

<强>解释

[+-]?     # optional sign
(?:       # either
 \d*\.\d+ # float with optional integer part
 |        # or
 \d+      # just integer
)

在Java中(迭代字符串中的所有匹配项):

Pattern regex = Pattern.compile("[+-]?(?:\\d*\\.\\d+|\\d+)");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
    // matched text: regexMatcher.group()
    // match start: regexMatcher.start()
    // match end: regexMatcher.end()
}