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

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


这似乎有点令人费解。

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

最佳答案

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

[+-]?(?:\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()
}

07-25 22:24